Bug 424826 - Ant tasks do not resolve version ranges from project output Made ProjectWorkspaceReader implement findVersions()
Project: http://git-wip-us.apache.org/repos/asf/maven-aether/repo Commit: http://git-wip-us.apache.org/repos/asf/maven-aether/commit/2d33eb21 Tree: http://git-wip-us.apache.org/repos/asf/maven-aether/tree/2d33eb21 Diff: http://git-wip-us.apache.org/repos/asf/maven-aether/diff/2d33eb21 Branch: refs/heads/ant-tasks Commit: 2d33eb2126687742650f51862ad6129047e62f92 Parents: 6734757 Author: Benjamin Bentmann <bentm...@sonatype.com> Authored: Thu Jan 2 23:34:45 2014 +0100 Committer: Benjamin Bentmann <bentm...@sonatype.com> Committed: Thu Jan 2 23:34:45 2014 +0100 ---------------------------------------------------------------------- .../aether/ant/ProjectWorkspaceReader.java | 35 +++++++++++++------- .../aether/ant/ProjectWorkspaceReaderTest.java | 30 +++++++++++++++++ .../org/eclipse/aether/ant/ReactorTest.java | 9 +++++ src/test/resources/ant/Reactor/ant.xml | 12 +++++++ 4 files changed, 74 insertions(+), 12 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/maven-aether/blob/2d33eb21/src/main/java/org/eclipse/aether/ant/ProjectWorkspaceReader.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/eclipse/aether/ant/ProjectWorkspaceReader.java b/src/main/java/org/eclipse/aether/ant/ProjectWorkspaceReader.java index 9372493..64cc7f5 100644 --- a/src/main/java/org/eclipse/aether/ant/ProjectWorkspaceReader.java +++ b/src/main/java/org/eclipse/aether/ant/ProjectWorkspaceReader.java @@ -11,7 +11,7 @@ package org.eclipse.aether.ant; import java.io.File; -import java.util.Collections; +import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; @@ -39,16 +39,18 @@ public class ProjectWorkspaceReader private static final Object LOCK = new Object(); - private Map<String, File> artifacts = new ConcurrentHashMap<String, File>(); + private Map<String, Artifact> artifacts = new ConcurrentHashMap<String, Artifact>(); public void addPom( Pom pom ) { if ( pom.getFile() != null ) { Model model = pom.getModel( pom ); - String coords = - coords( new DefaultArtifact( model.getGroupId(), model.getArtifactId(), null, "pom", model.getVersion() ) ); - artifacts.put( coords, pom.getFile() ); + Artifact aetherArtifact = + new DefaultArtifact( model.getGroupId(), model.getArtifactId(), null, "pom", model.getVersion() ); + aetherArtifact = aetherArtifact.setFile( pom.getFile() ); + String coords = coords( aetherArtifact ); + artifacts.put( coords, aetherArtifact ); } } @@ -56,10 +58,8 @@ public class ProjectWorkspaceReader { if ( artifact.getPom() != null ) { - String coords; - Pom pom = artifact.getPom(); - DefaultArtifact aetherArtifact; + Artifact aetherArtifact; if ( pom.getFile() != null ) { Model model = pom.getModel( pom ); @@ -73,9 +73,10 @@ public class ProjectWorkspaceReader new DefaultArtifact( pom.getGroupId(), pom.getArtifactId(), artifact.getClassifier(), artifact.getType(), pom.getVersion() ); } + aetherArtifact = aetherArtifact.setFile( artifact.getFile() ); - coords = coords( aetherArtifact ); - artifacts.put( coords, artifact.getFile() ); + String coords = coords( aetherArtifact ); + artifacts.put( coords, aetherArtifact ); } } @@ -91,12 +92,22 @@ public class ProjectWorkspaceReader public File findArtifact( Artifact artifact ) { - return artifacts.get( coords( artifact ) ); + artifact = artifacts.get( coords( artifact ) ); + return ( artifact != null ) ? artifact.getFile() : null; } public List<String> findVersions( Artifact artifact ) { - return Collections.emptyList(); + List<String> versions = new ArrayList<String>(); + String key = ArtifactIdUtils.toVersionlessId( artifact ); + for ( Artifact art : artifacts.values() ) + { + if ( key.equals( ArtifactIdUtils.toVersionlessId( art ) ) ) + { + versions.add( art.getVersion() ); + } + } + return versions; } ProjectWorkspaceReader() http://git-wip-us.apache.org/repos/asf/maven-aether/blob/2d33eb21/src/test/java/org/eclipse/aether/ant/ProjectWorkspaceReaderTest.java ---------------------------------------------------------------------- diff --git a/src/test/java/org/eclipse/aether/ant/ProjectWorkspaceReaderTest.java b/src/test/java/org/eclipse/aether/ant/ProjectWorkspaceReaderTest.java index e5a6bc7..1ad937a 100644 --- a/src/test/java/org/eclipse/aether/ant/ProjectWorkspaceReaderTest.java +++ b/src/test/java/org/eclipse/aether/ant/ProjectWorkspaceReaderTest.java @@ -10,6 +10,7 @@ *******************************************************************************/ package org.eclipse.aether.ant; +import static org.hamcrest.Matchers.*; import static org.junit.Assert.*; import java.io.File; @@ -82,4 +83,33 @@ public class ProjectWorkspaceReaderTest assertNull( reader.findArtifact( artifact( "unavailable:test:jar:0.1-SNAPSHOT" ) ) ); } + @Test + public void testFindVersions() + { + Pom pom1 = new Pom(); + pom1.setProject( project ); + pom1.setCoords( "test:dummy:1-SNAPSHOT" ); + + org.eclipse.aether.ant.types.Artifact artifact1 = new org.eclipse.aether.ant.types.Artifact(); + artifact1.setProject( project ); + artifact1.addPom( pom1 ); + artifact1.setFile( getFile( "dummy-file.txt" ) ); + + reader.addArtifact( artifact1 ); + + Pom pom2 = new Pom(); + pom2.setProject( project ); + pom2.setCoords( "test:dummy:2-SNAPSHOT" ); + + org.eclipse.aether.ant.types.Artifact artifact2 = new org.eclipse.aether.ant.types.Artifact(); + artifact2.setProject( project ); + artifact2.addPom( pom2 ); + artifact2.setFile( getFile( "dummy-file.txt" ) ); + + reader.addArtifact( artifact2 ); + + assertThat( reader.findVersions( artifact( "test:dummy:txt:[0,)" ) ), + containsInAnyOrder( "1-SNAPSHOT", "2-SNAPSHOT" ) ); + } + } http://git-wip-us.apache.org/repos/asf/maven-aether/blob/2d33eb21/src/test/java/org/eclipse/aether/ant/ReactorTest.java ---------------------------------------------------------------------- diff --git a/src/test/java/org/eclipse/aether/ant/ReactorTest.java b/src/test/java/org/eclipse/aether/ant/ReactorTest.java index ea56fae..12a724d 100644 --- a/src/test/java/org/eclipse/aether/ant/ReactorTest.java +++ b/src/test/java/org/eclipse/aether/ant/ReactorTest.java @@ -79,4 +79,13 @@ public class ReactorTest assertEquals( new File( projectDir, "pom1.xml" ).getAbsolutePath(), prop ); assertLogContaining( "The POM for test:test:jar:0.1-SNAPSHOT is missing, no dependency information available" ); } + + public void testResolveVersionRange() + throws IOException + { + executeTarget( "testResolveVersionRange" ); + String prop = project.getProperty( "resolve.test:test:jar" ); + assertEquals( new File( projectDir, "pom1.xml" ).getAbsolutePath(), prop ); + } + } http://git-wip-us.apache.org/repos/asf/maven-aether/blob/2d33eb21/src/test/resources/ant/Reactor/ant.xml ---------------------------------------------------------------------- diff --git a/src/test/resources/ant/Reactor/ant.xml b/src/test/resources/ant/Reactor/ant.xml index 81b5a4e..c2d30de 100644 --- a/src/test/resources/ant/Reactor/ant.xml +++ b/src/test/resources/ant/Reactor/ant.xml @@ -55,4 +55,16 @@ </repo:resolve> </target> + <target name="testResolveVersionRange"> + <repo:pom file="${project.dir}/pom1.xml" id="pom"/> + <repo:artifact pomref="pom" file="${project.dir}/pom1.xml" type="jar"/> + + <repo:resolve> + <dependencies> + <dependency groupId="test" artifactId="test" version="[0,)"/> + </dependencies> + <properties prefix="resolve"/> + </repo:resolve> + </target> + </project>