Modified: ant/ivy/core/trunk/test/java/org/apache/ivy/plugins/parser/m2/PomModuleDescriptorParserTest.java URL: http://svn.apache.org/viewvc/ant/ivy/core/trunk/test/java/org/apache/ivy/plugins/parser/m2/PomModuleDescriptorParserTest.java?rev=629194&r1=629193&r2=629194&view=diff ============================================================================== --- ant/ivy/core/trunk/test/java/org/apache/ivy/plugins/parser/m2/PomModuleDescriptorParserTest.java (original) +++ ant/ivy/core/trunk/test/java/org/apache/ivy/plugins/parser/m2/PomModuleDescriptorParserTest.java Tue Feb 19 11:18:43 2008 @@ -18,29 +18,51 @@ package org.apache.ivy.plugins.parser.m2; import java.io.File; +import java.io.IOException; +import java.text.ParseException; import java.util.Arrays; import java.util.Collections; -import java.util.HashMap; import java.util.HashSet; import java.util.Map; import org.apache.ivy.core.module.descriptor.Artifact; +import org.apache.ivy.core.module.descriptor.DefaultModuleDescriptor; import org.apache.ivy.core.module.descriptor.DependencyDescriptor; import org.apache.ivy.core.module.descriptor.ModuleDescriptor; import org.apache.ivy.core.module.id.ModuleId; import org.apache.ivy.core.module.id.ModuleRevisionId; +import org.apache.ivy.core.resolve.ResolveData; +import org.apache.ivy.core.resolve.ResolvedModuleRevision; import org.apache.ivy.core.settings.IvySettings; import org.apache.ivy.plugins.parser.AbstractModuleDescriptorParserTester; import org.apache.ivy.plugins.parser.xml.XmlModuleDescriptorParser; import org.apache.ivy.plugins.parser.xml.XmlModuleDescriptorParserTest; import org.apache.ivy.plugins.repository.url.URLResource; +import org.apache.ivy.plugins.resolver.MockResolver; public class PomModuleDescriptorParserTest extends AbstractModuleDescriptorParserTester { // junit test -- DO NOT REMOVE used by ant to know it's a junit test + + private IvySettings settings = new IvySettings(); + + private class MockedDependencyResolver extends MockResolver { + public ResolvedModuleRevision getDependency(DependencyDescriptor dd, ResolveData data) + throws ParseException { + //TODO make it a real mock and check that dd and data are the one that are expected + DefaultModuleDescriptor moduleDesc = DefaultModuleDescriptor.newDefaultInstance( + dd.getDependencyRevisionId()); + ResolvedModuleRevision r = new ResolvedModuleRevision(this,this,moduleDesc,null); + return r; + } + } private File dest = new File("build/test/test-write.xml"); - - public void setUp() { + private MockResolver mockedResolver = new MockedDependencyResolver(); + + + protected void setUp() throws Exception { + settings.setDictatorResolver(mockedResolver); + super.setUp(); if (dest.exists()) { dest.delete(); } @@ -48,13 +70,14 @@ dest.getParentFile().mkdirs(); } } - + + protected void tearDown() throws Exception { if (dest.exists()) { dest.delete(); } } - + public void testAccept() throws Exception { assertTrue(PomModuleDescriptorParser.getInstance().accept( new URLResource(getClass().getResource("test-simple.pom")))); @@ -64,14 +87,14 @@ public void testSimple() throws Exception { ModuleDescriptor md = PomModuleDescriptorParser.getInstance().parseDescriptor( - new IvySettings(), getClass().getResource("test-simple.pom"), false); + settings, getClass().getResource("test-simple.pom"), false); assertNotNull(md); ModuleRevisionId mrid = ModuleRevisionId.newInstance("org.apache", "test", "1.0"); assertEquals(mrid, md.getModuleRevisionId()); assertNotNull(md.getConfigurations()); - assertEquals(Arrays.asList(PomModuleDescriptorParser.MAVEN2_CONFIGURATIONS), Arrays + assertEquals(Arrays.asList(PomModuleDescriptorBuilder.MAVEN2_CONFIGURATIONS), Arrays .asList(md.getConfigurations())); Artifact[] artifact = md.getArtifacts("master"); @@ -84,16 +107,12 @@ public void testPackaging() throws Exception { ModuleDescriptor md = PomModuleDescriptorParser.getInstance().parseDescriptor( - new IvySettings(), getClass().getResource("test-packaging.pom"), false); + settings, getClass().getResource("test-packaging.pom"), false); assertNotNull(md); ModuleRevisionId mrid = ModuleRevisionId.newInstance("org.apache", "test", "1.0"); assertEquals(mrid, md.getModuleRevisionId()); - assertNotNull(md.getConfigurations()); - assertEquals(Arrays.asList(PomModuleDescriptorParser.MAVEN2_CONFIGURATIONS), Arrays - .asList(md.getConfigurations())); - Artifact[] artifact = md.getArtifacts("master"); assertEquals(1, artifact.length); assertEquals(mrid, artifact[0].getModuleRevisionId()); @@ -102,18 +121,15 @@ assertEquals("war", artifact[0].getType()); } + public void testParent() throws Exception { ModuleDescriptor md = PomModuleDescriptorParser.getInstance().parseDescriptor( - new IvySettings(), getClass().getResource("test-parent.pom"), false); + settings, getClass().getResource("test-parent.pom"), false); assertNotNull(md); ModuleRevisionId mrid = ModuleRevisionId.newInstance("org.apache", "test", "1.0"); assertEquals(mrid, md.getModuleRevisionId()); - assertNotNull(md.getConfigurations()); - assertEquals(Arrays.asList(PomModuleDescriptorParser.MAVEN2_CONFIGURATIONS), Arrays - .asList(md.getConfigurations())); - Artifact[] artifact = md.getArtifacts("master"); assertEquals(1, artifact.length); assertEquals(mrid, artifact[0].getModuleRevisionId()); @@ -122,16 +138,12 @@ public void testParent2() throws Exception { ModuleDescriptor md = PomModuleDescriptorParser.getInstance().parseDescriptor( - new IvySettings(), getClass().getResource("test-parent2.pom"), false); + settings, getClass().getResource("test-parent2.pom"), false); assertNotNull(md); ModuleRevisionId mrid = ModuleRevisionId.newInstance("org.apache", "test", "1.0"); assertEquals(mrid, md.getModuleRevisionId()); - assertNotNull(md.getConfigurations()); - assertEquals(Arrays.asList(PomModuleDescriptorParser.MAVEN2_CONFIGURATIONS), Arrays - .asList(md.getConfigurations())); - Artifact[] artifact = md.getArtifacts("master"); assertEquals(1, artifact.length); assertEquals(mrid, artifact[0].getModuleRevisionId()); @@ -140,16 +152,12 @@ public void testParentVersion() throws Exception { ModuleDescriptor md = PomModuleDescriptorParser.getInstance().parseDescriptor( - new IvySettings(), getClass().getResource("test-parent.version.pom"), false); + settings, getClass().getResource("test-parent.version.pom"), false); assertNotNull(md); ModuleRevisionId mrid = ModuleRevisionId.newInstance("org.apache", "test", "1.0"); assertEquals(mrid, md.getModuleRevisionId()); - assertNotNull(md.getConfigurations()); - assertEquals(Arrays.asList(PomModuleDescriptorParser.MAVEN2_CONFIGURATIONS), Arrays - .asList(md.getConfigurations())); - Artifact[] artifact = md.getArtifacts("master"); assertEquals(1, artifact.length); assertEquals(mrid, artifact[0].getModuleRevisionId()); @@ -158,7 +166,7 @@ public void testDependencies() throws Exception { ModuleDescriptor md = PomModuleDescriptorParser.getInstance().parseDescriptor( - new IvySettings(), getClass().getResource("test-dependencies.pom"), false); + settings, getClass().getResource("test-dependencies.pom"), false); assertNotNull(md); assertEquals(ModuleRevisionId.newInstance("org.apache", "test", "1.0"), md @@ -169,11 +177,13 @@ assertEquals(1, dds.length); assertEquals(ModuleRevisionId.newInstance("commons-logging", "commons-logging", "1.0.4"), dds[0].getDependencyRevisionId()); + assertEquals("There is no special artifact when there is no classifier", + 0, dds[0].getAllDependencyArtifacts().length); } public void testDependenciesWithClassifier() throws Exception { ModuleDescriptor md = PomModuleDescriptorParser.getInstance().parseDescriptor( - new IvySettings(), getClass().getResource("test-dependencies-with-classifier.pom"), + settings, getClass().getResource("test-dependencies-with-classifier.pom"), true); assertNotNull(md); @@ -188,30 +198,29 @@ Map extraAtt = Collections.singletonMap("classifier", "asl"); assertEquals(1, dds[0].getAllDependencyArtifacts().length); assertEquals(extraAtt, dds[0].getAllDependencyArtifacts()[0].getExtraAttributes()); - + // now we verify the conversion to an Ivy file PomModuleDescriptorParser.getInstance().toIvyFile( - getClass().getResource("test-dependencies-with-classifier.pom").openStream(), - new URLResource(getClass().getResource("test-dependencies-with-classifier.pom")), + getClass().getResource("test-dependencies-with-classifier.pom").openStream(), + new URLResource(getClass().getResource("test-dependencies-with-classifier.pom")), dest, md); - + assertTrue(dest.exists()); - + // the converted Ivy file should be parsable with validate=true ModuleDescriptor md2 = XmlModuleDescriptorParser.getInstance() .parseDescriptor(new IvySettings(), dest.toURL(), true); - + // and the parsed module descriptor should be similar to the original assertNotNull(md2); assertEquals(md.getModuleRevisionId(), md2.getModuleRevisionId()); - dds = md2.getDependencies(); - assertEquals(1, dds[0].getAllDependencyArtifacts().length); + dds = md2.getDependencies(); assertEquals(1, dds[0].getAllDependencyArtifacts().length); assertEquals(extraAtt, dds[0].getAllDependencyArtifacts()[0].getExtraAttributes()); } public void testWithVersionProperty() throws Exception { ModuleDescriptor md = PomModuleDescriptorParser.getInstance().parseDescriptor( - new IvySettings(), getClass().getResource("test-version.pom"), false); + settings, getClass().getResource("test-version.pom"), false); assertNotNull(md); DependencyDescriptor[] dds = md.getDependencies(); @@ -224,7 +233,7 @@ // IVY-392 public void testDependenciesWithProfile() throws Exception { ModuleDescriptor md = PomModuleDescriptorParser.getInstance().parseDescriptor( - new IvySettings(), getClass().getResource("test-dependencies-with-profile.pom"), false); + settings, getClass().getResource("test-dependencies-with-profile.pom"), false); assertNotNull(md); assertEquals(ModuleRevisionId.newInstance("org.apache", "test", "1.0"), md @@ -239,7 +248,7 @@ public void testWithoutVersion() throws Exception { ModuleDescriptor md = PomModuleDescriptorParser.getInstance().parseDescriptor( - new IvySettings(), getClass().getResource("test-without-version.pom"), false); + settings, getClass().getResource("test-without-version.pom"), false); assertNotNull(md); assertEquals(new ModuleId("org.apache", "test"), md.getModuleRevisionId().getModuleId()); @@ -253,7 +262,7 @@ public void testProperties() throws Exception { ModuleDescriptor md = PomModuleDescriptorParser.getInstance().parseDescriptor( - new IvySettings(), getClass().getResource("test-properties.pom"), false); + settings, getClass().getResource("test-properties.pom"), false); assertNotNull(md); assertEquals(ModuleRevisionId.newInstance("drools", "drools-smf", "2.0-beta-18"), md @@ -268,7 +277,7 @@ public void testReal() throws Exception { ModuleDescriptor md = PomModuleDescriptorParser.getInstance().parseDescriptor( - new IvySettings(), getClass().getResource("commons-lang-1.0.pom"), false); + settings, getClass().getResource("commons-lang-1.0.pom"), false); assertNotNull(md); assertEquals(ModuleRevisionId.newInstance("commons-lang", "commons-lang", "1.0"), md @@ -283,7 +292,7 @@ public void testReal2() throws Exception { ModuleDescriptor md = PomModuleDescriptorParser.getInstance().parseDescriptor( - new IvySettings(), getClass().getResource("wicket-1.3-incubating-SNAPSHOT.pom"), false); + settings, getClass().getResource("wicket-1.3-incubating-SNAPSHOT.pom"), false); assertNotNull(md); assertEquals(ModuleRevisionId.newInstance("org.apache.wicket", "wicket", @@ -293,7 +302,7 @@ public void testVariables() throws Exception { // test case for IVY-425 ModuleDescriptor md = PomModuleDescriptorParser.getInstance().parseDescriptor( - new IvySettings(), getClass().getResource("spring-hibernate3-2.0.2.pom"), false); + settings, getClass().getResource("spring-hibernate3-2.0.2.pom"), false); assertNotNull(md); assertEquals(ModuleRevisionId.newInstance("org.springframework", "spring-hibernate3", @@ -309,7 +318,7 @@ public void testDependenciesInProfile() throws Exception { // test case for IVY-423 ModuleDescriptor md = PomModuleDescriptorParser.getInstance().parseDescriptor( - new IvySettings(), getClass().getResource("mule-module-builders-1.3.3.pom"), false); + settings, getClass().getResource("mule-module-builders-1.3.3.pom"), false); assertNotNull(md); assertEquals(ModuleRevisionId.newInstance("org.mule.modules", "mule-module-builders", @@ -319,7 +328,7 @@ public void testIVY424() throws Exception { // test case for IVY-424 ModuleDescriptor md = PomModuleDescriptorParser.getInstance().parseDescriptor( - new IvySettings(), getClass().getResource("shale-tiger-1.1.0-SNAPSHOT.pom"), false); + settings, getClass().getResource("shale-tiger-1.1.0-SNAPSHOT.pom"), false); assertNotNull(md); assertEquals(ModuleRevisionId.newInstance("org.apache.shale", "shale-tiger", @@ -328,7 +337,7 @@ public void testOptional() throws Exception { ModuleDescriptor md = PomModuleDescriptorParser.getInstance().parseDescriptor( - new IvySettings(), getClass().getResource("test-optional.pom"), false); + settings, getClass().getResource("test-optional.pom"), false); assertNotNull(md); assertEquals(ModuleRevisionId.newInstance("org.apache", "test", "1.0"), md @@ -342,9 +351,10 @@ dds[0].getDependencyRevisionId()); assertEquals(new HashSet(Arrays.asList(new String[] {"optional"})), new HashSet(Arrays .asList(dds[0].getModuleConfigurations()))); - assertEquals(new HashSet(Arrays.asList(new String[] {"compile(*)", "runtime(*)", - "master(*)"})), new HashSet(Arrays.asList(dds[0] - .getDependencyConfigurations("optional")))); + //I don't know what it should be. Ivy has no notion of optional dependencies + //assertEquals(new HashSet(Arrays.asList(new String[] {"compile(*)", "runtime(*)", + // "master(*)"})), new HashSet(Arrays.asList(dds[0] + // .getDependencyConfigurations("optional")))); assertEquals(ModuleRevisionId.newInstance("cglib", "cglib", "2.0.2"), dds[1] .getDependencyRevisionId()); @@ -358,7 +368,7 @@ public void testDependenciesWithScope() throws Exception { ModuleDescriptor md = PomModuleDescriptorParser.getInstance().parseDescriptor( - new IvySettings(), getClass().getResource("test-dependencies-with-scope.pom"), false); + settings, getClass().getResource("test-dependencies-with-scope.pom"), false); assertNotNull(md); assertEquals(ModuleRevisionId.newInstance("org.apache", "test", "1.0"), md @@ -396,7 +406,7 @@ public void testExclusion() throws Exception { ModuleDescriptor md = PomModuleDescriptorParser.getInstance().parseDescriptor( - new IvySettings(), getClass().getResource("test-exclusion.pom"), false); + settings, getClass().getResource("test-exclusion.pom"), false); assertNotNull(md); assertEquals(ModuleRevisionId.newInstance("org.apache", "test", "1.0"), md @@ -442,7 +452,7 @@ public void testWithPlugins() throws Exception { // test case for IVY-417 ModuleDescriptor md = PomModuleDescriptorParser.getInstance().parseDescriptor( - new IvySettings(), getClass().getResource("mule-1.3.3.pom"), false); + settings, getClass().getResource("mule-1.3.3.pom"), false); assertNotNull(md); assertEquals(ModuleRevisionId.newInstance("org.mule", "mule", "1.3.3"), md @@ -453,4 +463,49 @@ assertEquals(0, dds.length); } + + public void testDependencyManagment() throws ParseException, IOException { + ModuleDescriptor md = PomModuleDescriptorParser.getInstance().parseDescriptor( + settings, getClass().getResource("test-dependencieMgt.pom"), false); + assertNotNull(md); + assertEquals(ModuleRevisionId.newInstance("org.apache", "test-depMgt", "1.0"), + md.getModuleRevisionId()); + + DependencyDescriptor[] dds = md.getDependencies(); + assertNotNull(dds); + assertEquals(1, dds.length); + assertEquals(ModuleRevisionId.newInstance("commons-logging", "commons-logging", "1.0.4"), + dds[0].getDependencyRevisionId()); + assertEquals("There is no special artifact when there is no classifier", + 0, dds[0].getAllDependencyArtifacts().length); + + } + + public void testParentDependencyMgt() throws ParseException, IOException { + settings.setDictatorResolver(new MockResolver() { + public ResolvedModuleRevision getDependency(DependencyDescriptor dd, ResolveData data) throws ParseException { + try { + ModuleDescriptor moduleDescriptor = PomModuleDescriptorParser.getInstance().parseDescriptor( + settings, getClass().getResource("test-dependencieMgt.pom"), false); + return new ResolvedModuleRevision(null,null,moduleDescriptor,null); + } catch (IOException e) { + throw new AssertionError(e); + } + } + }); + + ModuleDescriptor md = PomModuleDescriptorParser.getInstance().parseDescriptor( + settings, getClass().getResource("test-parentDependencieMgt.pom"), false); + assertNotNull(md); + assertEquals(ModuleRevisionId.newInstance("org.apache", "test-parentdep", "1.0"), md + .getModuleRevisionId()); + + DependencyDescriptor[] dds = md.getDependencies(); + assertNotNull(dds); + assertEquals(2, dds.length); + assertEquals(ModuleRevisionId.newInstance("commons-logging", "commons-logging", "1.0.4"), + dds[0].getDependencyRevisionId()); + assertEquals(ModuleRevisionId.newInstance("commons-collection", "commons-collection", "1.0.5"), + dds[1].getDependencyRevisionId()); + } }
Added: ant/ivy/core/trunk/test/java/org/apache/ivy/plugins/parser/m2/test-dependencieMgt.pom URL: http://svn.apache.org/viewvc/ant/ivy/core/trunk/test/java/org/apache/ivy/plugins/parser/m2/test-dependencieMgt.pom?rev=629194&view=auto ============================================================================== --- ant/ivy/core/trunk/test/java/org/apache/ivy/plugins/parser/m2/test-dependencieMgt.pom (added) +++ ant/ivy/core/trunk/test/java/org/apache/ivy/plugins/parser/m2/test-dependencieMgt.pom Tue Feb 19 11:18:43 2008 @@ -0,0 +1,51 @@ +<?xml version="1.0"?> +<!-- + Licensed to the Apache Software Foundation (ASF) under one + or more contributor license agreements. See the NOTICE file + distributed with this work for additional information + regarding copyright ownership. The ASF licenses this file + to you under the Apache License, Version 2.0 (the + "License"); you may not use this file except in compliance + with the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, + software distributed under the License is distributed on an + "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + KIND, either express or implied. See the License for the + specific language governing permissions and limitations + under the License. +--> +<project> + <modelVersion>4.0.0</modelVersion> + <groupId>org.apache</groupId> + <artifactId>test-depMgt</artifactId> + <name>Test Module for Ivy M2 parsing</name> + <version>1.0</version> + <url>http://ivy.jayasoft.org/</url> + <organization> + <name>Jayasoft</name> + <url>http://www.jayasoft.org/</url> + </organization> + <dependencyManagement> + <dependencies> + <dependency> + <groupId>commons-logging</groupId> + <artifactId>commons-logging</artifactId> + <version>1.0.4</version> + </dependency> + <dependency> + <groupId>commons-collection</groupId> + <artifactId>commons-collection</artifactId> + <version>1.0.5</version> + </dependency> + </dependencies> + </dependencyManagement> + <dependencies> + <dependency> + <groupId>commons-logging</groupId> + <artifactId>commons-logging</artifactId> + </dependency> + </dependencies> +</project> Propchange: ant/ivy/core/trunk/test/java/org/apache/ivy/plugins/parser/m2/test-dependencieMgt.pom ------------------------------------------------------------------------------ svn:eol-style = native Added: ant/ivy/core/trunk/test/java/org/apache/ivy/plugins/parser/m2/test-parentDependencieMgt.pom URL: http://svn.apache.org/viewvc/ant/ivy/core/trunk/test/java/org/apache/ivy/plugins/parser/m2/test-parentDependencieMgt.pom?rev=629194&view=auto ============================================================================== --- ant/ivy/core/trunk/test/java/org/apache/ivy/plugins/parser/m2/test-parentDependencieMgt.pom (added) +++ ant/ivy/core/trunk/test/java/org/apache/ivy/plugins/parser/m2/test-parentDependencieMgt.pom Tue Feb 19 11:18:43 2008 @@ -0,0 +1,43 @@ +<?xml version="1.0"?> +<!-- + Licensed to the Apache Software Foundation (ASF) under one + or more contributor license agreements. See the NOTICE file + distributed with this work for additional information + regarding copyright ownership. The ASF licenses this file + to you under the Apache License, Version 2.0 (the + "License"); you may not use this file except in compliance + with the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, + software distributed under the License is distributed on an + "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + KIND, either express or implied. See the License for the + specific language governing permissions and limitations + under the License. +--> +<project> + <modelVersion>4.0.0</modelVersion> + <parent> + <artifactId>test-depMgt</artifactId> + <groupId>org.apache</groupId> + <version>1.0</version> + </parent> + <groupId>org.apache</groupId> + <artifactId>test-parentdep</artifactId> + <name>Test Module for Ivy M2 parsing</name> + <version>1.0</version> + <url>http://ivy.jayasoft.org/</url> + <organization> + <name>Jayasoft</name> + <url>http://www.jayasoft.org/</url> + </organization> + <dependencies> + <dependency> + <groupId>commons-collection</groupId> + <artifactId>commons-collection</artifactId> + <version>1.0.5</version> + </dependency> + </dependencies> +</project> Propchange: ant/ivy/core/trunk/test/java/org/apache/ivy/plugins/parser/m2/test-parentDependencieMgt.pom ------------------------------------------------------------------------------ svn:eol-style = native Modified: ant/ivy/core/trunk/test/java/org/apache/ivy/plugins/parser/xml/test-write-full.xml URL: http://svn.apache.org/viewvc/ant/ivy/core/trunk/test/java/org/apache/ivy/plugins/parser/xml/test-write-full.xml?rev=629194&r1=629193&r2=629194&view=diff ============================================================================== --- ant/ivy/core/trunk/test/java/org/apache/ivy/plugins/parser/xml/test-write-full.xml (original) +++ ant/ivy/core/trunk/test/java/org/apache/ivy/plugins/parser/xml/test-write-full.xml Tue Feb 19 11:18:43 2008 @@ -24,7 +24,9 @@ status="integration" publication="20041101110000" e:attr1="value1" - /> + > + <e:someExtra>56576</e:someExtra> + </info> <configurations> <conf name="myconf1" visibility="public" description="desc 1" e:attr2="value2"/> <conf name="myconf2" visibility="public" description="desc 2"/> Modified: ant/ivy/core/trunk/test/java/org/apache/ivy/plugins/parser/xml/test.xml URL: http://svn.apache.org/viewvc/ant/ivy/core/trunk/test/java/org/apache/ivy/plugins/parser/xml/test.xml?rev=629194&r1=629193&r2=629194&view=diff ============================================================================== --- ant/ivy/core/trunk/test/java/org/apache/ivy/plugins/parser/xml/test.xml (original) +++ ant/ivy/core/trunk/test/java/org/apache/ivy/plugins/parser/xml/test.xml Tue Feb 19 11:18:43 2008 @@ -32,7 +32,9 @@ <repository name="ivyrep" url="http://www.jayasoft.fr/org/ivyrep/" pattern="[organisation]/[module]/ivy-[revision].xml" ivys="true" artifacts="false"/> - <description homepage="http://www.my.org/mymodule/"> + <e:someExtra>56576</e:someExtra> + + <description homepage="http://www.my.org/mymodule/"> This module is <b>great</b> !<br/> You can use it especially with myconf1 and myconf2, and myconf4 is not too bad too. </description>