Index: test/java/org/apache/ivy/ant/IvyInfoTest.java =================================================================== --- test/java/org/apache/ivy/ant/IvyInfoTest.java (revision 908304) +++ test/java/org/apache/ivy/ant/IvyInfoTest.java (working copy) @@ -36,7 +36,7 @@ public void testSimple() throws Exception { info.setFile(new File("test/java/org/apache/ivy/ant/ivy-simple.xml")); info.execute(); - + assertEquals("apache", info.getProject().getProperty("ivy.organisation")); assertEquals("resolve-simple", info.getProject().getProperty("ivy.module")); assertEquals("1.0", info.getProject().getProperty("ivy.revision")); @@ -47,7 +47,7 @@ public void testAll() throws Exception { info.setFile(new File("test/java/org/apache/ivy/ant/ivy-info-all.xml")); info.execute(); - + assertEquals("apache", info.getProject().getProperty("ivy.organisation")); assertEquals("info-all", info.getProject().getProperty("ivy.module")); assertEquals("1.0", info.getProject().getProperty("ivy.revision")); @@ -56,7 +56,7 @@ assertEquals("default, test", info.getProject().getProperty("ivy.public.configurations")); assertEquals("trunk", info.getProject().getProperty("ivy.branch")); assertEquals("myvalue", info.getProject().getProperty("ivy.extra.myextraatt")); - + // test the configuration descriptions assertEquals("The default dependencies", info.getProject().getProperty("ivy.configuration.default.desc")); assertEquals("Dependencies used for testing", info.getProject().getProperty("ivy.configuration.test.desc")); @@ -66,8 +66,27 @@ public void testIVY726() throws Exception { info.setFile(new File("test/java/org/apache/ivy/ant/ivy-info-all.xml")); info.execute(); - + assertTrue(info.getProject().getProperty("ivy.extra.branch") == null); } -} \ No newline at end of file + public void testIVY395() throws Exception { + info.setFile(new File("test/java/org/apache/ivy/ant/ivy-artifact-info.xml")); + info.execute(); + + assertEquals("jar", info.getProject().getProperty("ivy.artifact.test.type")); + assertEquals("jar", info.getProject().getProperty("ivy.artifact.test.ext")); + assertEquals("master, alt", info.getProject().getProperty("ivy.artifact.test.conf")); + assertEquals("main", info.getProject().getProperty("ivy.artifact.test.extra.data")); + + assertEquals("jar", info.getProject().getProperty("ivy.artifact.test-a.type")); + assertEquals("jar", info.getProject().getProperty("ivy.artifact.test-a.ext")); + assertEquals("alt", info.getProject().getProperty("ivy.artifact.test-a.conf")); + assertEquals("client", info.getProject().getProperty("ivy.artifact.test-a.extra.data")); + + assertEquals("javadoc", info.getProject().getProperty("ivy.artifact.stuff.type")); + assertEquals("zip", info.getProject().getProperty("ivy.artifact.stuff.ext")); + assertEquals("doc", info.getProject().getProperty("ivy.artifact.stuff.conf")); + } + +} Index: test/java/org/apache/ivy/ant/ivy-artifact-info.xml =================================================================== --- test/java/org/apache/ivy/ant/ivy-artifact-info.xml (revision 0) +++ test/java/org/apache/ivy/ant/ivy-artifact-info.xml (revision 0) @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + Index: src/java/org/apache/ivy/ant/IvyInfo.java =================================================================== --- src/java/org/apache/ivy/ant/IvyInfo.java (revision 908304) +++ src/java/org/apache/ivy/ant/IvyInfo.java (working copy) @@ -27,6 +27,7 @@ import java.util.Map.Entry; import org.apache.ivy.Ivy; +import org.apache.ivy.core.module.descriptor.Artifact; import org.apache.ivy.core.module.descriptor.Configuration; import org.apache.ivy.core.module.descriptor.ModuleDescriptor; import org.apache.ivy.core.module.descriptor.Configuration.Visibility; @@ -147,8 +148,8 @@ throw new BuildException("impossible to resolve dependencies: " + e, e); } } - - private void setProperties(ModuleDescriptor md, ModuleRevisionId mrid) { + + private void setProperties(ModuleDescriptor md, ModuleRevisionId mrid) { getProject().setProperty(property + ".organisation", mrid.getOrganisation()); getProject().setProperty(property + ".module", mrid.getName()); if (mrid.getBranch() != null) { @@ -156,16 +157,20 @@ } getProject().setProperty(property + ".revision", mrid.getRevision()); getProject().setProperty(property + ".status", md.getStatus()); - + if (md.getPublicationDate() != null) { + getProject().setProperty(property + ".publication", + Long.toString(md.getPublicationDate().getTime())); + } + Map extra = mrid.getExtraAttributes(); for (Iterator iter = extra.entrySet().iterator(); iter.hasNext();) { Entry entry = (Entry) iter.next(); getProject().setProperty( property + ".extra." + entry.getKey(), (String) entry.getValue()); } - + getProject().setProperty( - property + ".configurations", mergeConfs(md.getConfigurationsNames())); + property + ".configurations", mergeConfs(md.getConfigurationsNames())); // store the public configurations in a separate property Configuration[] configs = md.getConfigurations(); @@ -175,14 +180,30 @@ if (Visibility.PUBLIC.equals(configs[i].getVisibility())) { publicConfigsList.add(name); } - + if (configs[i].getDescription() != null) { getProject().setProperty(property + ".configuration." + name + ".desc", configs[i].getDescription()); } } - String[] publicConfigs = (String[]) publicConfigsList - .toArray(new String[publicConfigsList.size()]); + String[] publicConfigs = + (String[]) publicConfigsList.toArray(new String[publicConfigsList.size()]); getProject().setProperty(property + ".public.configurations", mergeConfs(publicConfigs)); + + Artifact[] artifacts = md.getAllArtifacts(); + for (int i = 0; i < artifacts.length; i++) { + String name = artifacts[i].getName(); + getProject().setProperty(property + ".artifact." + name + ".type", artifacts[i].getType()); + getProject().setProperty(property + ".artifact." + name + ".ext", artifacts[i].getExt()); + getProject().setProperty(property + ".artifact." + name + ".conf", + mergeConfs(artifacts[i].getConfigurations())); + + Map artiExtra = artifacts[i].getExtraAttributes(); + for (Iterator iter = artiExtra.entrySet().iterator(); iter.hasNext();) { + Entry entry = (Entry) iter.next(); + getProject().setProperty(property + ".artifact." + name + ".extra." + entry.getKey(), + (String) entry.getValue()); + } + } } }