You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by hb...@apache.org on 2016/05/07 13:30:16 UTC

[23/50] [abbrv] maven-aether git commit: Bug 433079 - Add option to specify dependencies from a plain text file

Bug 433079 - Add option to specify dependencies from a plain text file

Extended <dependencies> element to recognize optional "file" attribute that provides dependencies via a line-based plain text file


Project: http://git-wip-us.apache.org/repos/asf/maven-aether/repo
Commit: http://git-wip-us.apache.org/repos/asf/maven-aether/commit/755fdff3
Tree: http://git-wip-us.apache.org/repos/asf/maven-aether/tree/755fdff3
Diff: http://git-wip-us.apache.org/repos/asf/maven-aether/diff/755fdff3

Branch: refs/heads/ant-tasks
Commit: 755fdff313ffb4a64ff1025d0541aca834036e0d
Parents: abc5293
Author: Benjamin Bentmann <be...@sonatype.com>
Authored: Sat Apr 19 19:10:39 2014 +0200
Committer: Benjamin Bentmann <be...@sonatype.com>
Committed: Sat Apr 19 19:10:39 2014 +0200

----------------------------------------------------------------------
 README.md                                       | 10 ++++
 .../java/org/eclipse/aether/ant/AntRepoSys.java | 59 ++++++++++++++++++++
 .../eclipse/aether/ant/types/Dependencies.java  | 31 +++++++++-
 .../org/eclipse/aether/ant/ResolveTest.java     | 12 ++++
 src/test/resources/ant/Resolve/ant.xml          |  9 +++
 src/test/resources/ant/Resolve/dependencies.txt | 11 ++++
 6 files changed, 131 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/maven-aether/blob/755fdff3/README.md
----------------------------------------------------------------------
diff --git a/README.md b/README.md
index 00e66d2..c062d4e 100644
--- a/README.md
+++ b/README.md
@@ -145,6 +145,16 @@ transitively.
         <exclusion coords="g:a"/> <!-- global exclusion for all dependencies of this group -->
     </dependencies>
 
+    <dependencies id="depsFromPom" pomRef="pom"/>
+
+    <dependencies id="depsFromPlainTextFile" file="dependencies.txt"/>
+    <!--
+    Each non-empty line of that text file declares one dependency, using the same syntax as for the `coords` attribute
+    of the `<dependency>` element, i.e.
+    <groupId>:<artifactId>:<version>[[:<type>[:<classifier>]]:<scope>]
+    Everything after the first hash (#) character on a line is considered a comment.
+    -->
+
 
 ## Tasks
 

http://git-wip-us.apache.org/repos/asf/maven-aether/blob/755fdff3/src/main/java/org/eclipse/aether/ant/AntRepoSys.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/eclipse/aether/ant/AntRepoSys.java b/src/main/java/org/eclipse/aether/ant/AntRepoSys.java
index d9af18b..cf81357 100644
--- a/src/main/java/org/eclipse/aether/ant/AntRepoSys.java
+++ b/src/main/java/org/eclipse/aether/ant/AntRepoSys.java
@@ -10,7 +10,12 @@
  *******************************************************************************/
 package org.eclipse.aether.ant;
 
+import java.io.BufferedReader;
 import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.HashMap;
@@ -635,6 +640,8 @@ public class AntRepoSys
                     dependency.setVersion( dep.getVersion() );
                     if ( ids.contains( dependency.getVersionlessKey() ) )
                     {
+                        project.log( "Ignoring dependency " + dependency.getVersionlessKey() + " from " + model.getId()
+                            + ", already declared locally", Project.MSG_VERBOSE );
                         continue;
                     }
                     if ( dep.getSystemPath() != null && dep.getSystemPath().length() > 0 )
@@ -653,6 +660,21 @@ public class AntRepoSys
                     collectRequest.addDependency( ConverterUtils.toDependency( dependency, globalExclusions, session ) );
                 }
             }
+
+            if ( dependencies.getFile() != null )
+            {
+                List<Dependency> deps = readDependencies( dependencies.getFile() );
+                for ( Dependency dependency : deps )
+                {
+                    if ( ids.contains( dependency.getVersionlessKey() ) )
+                    {
+                        project.log( "Ignoring dependency " + dependency.getVersionlessKey() + " from "
+                                         + dependencies.getFile() + ", already declared locally", Project.MSG_VERBOSE );
+                        continue;
+                    }
+                    collectRequest.addDependency( ConverterUtils.toDependency( dependency, globalExclusions, session ) );
+                }
+            }
         }
 
         task.getProject().log( "Collecting dependencies", Project.MSG_VERBOSE );
@@ -670,4 +692,41 @@ public class AntRepoSys
         return result;
     }
 
+    private List<Dependency> readDependencies( File file )
+    {
+        List<Dependency> dependencies = new ArrayList<Dependency>();
+        try
+        {
+            BufferedReader reader = new BufferedReader( new InputStreamReader( new FileInputStream( file ), "UTF-8" ) );
+            try
+            {
+                for ( String line = reader.readLine(); line != null; line = reader.readLine() )
+                {
+                    int comment = line.indexOf( '#' );
+                    if ( comment >= 0 )
+                    {
+                        line = line.substring( 0, comment );
+                    }
+                    line = line.trim();
+                    if ( line.length() <= 0 )
+                    {
+                        continue;
+                    }
+                    Dependency dependency = new Dependency();
+                    dependency.setCoords( line );
+                    dependencies.add( dependency );
+                }
+            }
+            finally
+            {
+                reader.close();
+            }
+        }
+        catch ( IOException e )
+        {
+            throw new BuildException( "Cannot read " + file, e );
+        }
+        return dependencies;
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/maven-aether/blob/755fdff3/src/main/java/org/eclipse/aether/ant/types/Dependencies.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/eclipse/aether/ant/types/Dependencies.java b/src/main/java/org/eclipse/aether/ant/types/Dependencies.java
index f113755..d26627d 100644
--- a/src/main/java/org/eclipse/aether/ant/types/Dependencies.java
+++ b/src/main/java/org/eclipse/aether/ant/types/Dependencies.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2010, 2011 Sonatype, Inc.
+ * Copyright (c) 2010, 2014 Sonatype, Inc.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -10,6 +10,7 @@
  *******************************************************************************/
 package org.eclipse.aether.ant.types;
 
+import java.io.File;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
@@ -26,6 +27,8 @@ public class Dependencies
     extends DataType
 {
 
+    private File file;
+
     private Pom pom;
 
     private List<Dependency> dependencies = new ArrayList<Dependency>();
@@ -74,6 +77,22 @@ public class Dependencies
         super.setRefid( ref );
     }
 
+    public void setFile( File file )
+    {
+        checkAttributesAllowed();
+        this.file = file;
+        checkExternalSources();
+    }
+
+    public File getFile()
+    {
+        if ( isReference() )
+        {
+            return getRef().getFile();
+        }
+        return file;
+    }
+
     public void addPom( Pom pom )
     {
         checkChildrenAllowed();
@@ -82,6 +101,7 @@ public class Dependencies
             throw new BuildException( "You must not specify multiple <pom> elements" );
         }
         this.pom = pom;
+        checkExternalSources();
     }
 
     public Pom getPom()
@@ -101,6 +121,15 @@ public class Dependencies
             pom.setProject( getProject() );
         }
         pom.setRefid( ref );
+        checkExternalSources();
+    }
+
+    private void checkExternalSources()
+    {
+        if ( file != null && pom != null )
+        {
+            throw new BuildException( "You must not specify both a text file and a POM to list dependencies" );
+        }
     }
 
     public void addDependency( Dependency dependency )

http://git-wip-us.apache.org/repos/asf/maven-aether/blob/755fdff3/src/test/java/org/eclipse/aether/ant/ResolveTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/eclipse/aether/ant/ResolveTest.java b/src/test/java/org/eclipse/aether/ant/ResolveTest.java
index 5505c20..921f80d 100644
--- a/src/test/java/org/eclipse/aether/ant/ResolveTest.java
+++ b/src/test/java/org/eclipse/aether/ant/ResolveTest.java
@@ -96,4 +96,16 @@ public class ResolveTest
                     hasItemInArray( allOf( containsString( "aether-api" ), endsWith( ".jar" ) ) ) );
     }
 
+    public void testResolveDepsFromFile()
+    {
+        executeTarget( "testResolveDepsFromFile" );
+
+        String prop = getProject().getProperty( "test.resolve.path.org.eclipse.aether:aether-spi:jar" );
+        assertThat( "aether-spi was not resolved as a property", prop, notNullValue() );
+        assertThat( "aether-spi was not resolved to default local repository", prop,
+                    allOf( containsString( "aether-spi" ), endsWith( ".jar" ) ) );
+        prop = getProject().getProperty( "test.resolve.path.org.eclipse.aether:aether-api:jar" );
+        assertThat( "aether-api was resolved as a property", prop, nullValue() );
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/maven-aether/blob/755fdff3/src/test/resources/ant/Resolve/ant.xml
----------------------------------------------------------------------
diff --git a/src/test/resources/ant/Resolve/ant.xml b/src/test/resources/ant/Resolve/ant.xml
index 2dbfa58..e7c4890 100644
--- a/src/test/resources/ant/Resolve/ant.xml
+++ b/src/test/resources/ant/Resolve/ant.xml
@@ -78,4 +78,13 @@
     <echo>${tostring:out}</echo>
   </target>
 
+  <target name="testResolveDepsFromFile">
+    <repo:resolve>
+      <dependencies file="${project.dir}/dependencies.txt">
+        <exclusion coords="org.eclipse.aether:aether-api"/>
+      </dependencies>
+      <properties prefix="test.resolve.path" classpath="runtime"/>
+    </repo:resolve>
+  </target>
+
 </project>

http://git-wip-us.apache.org/repos/asf/maven-aether/blob/755fdff3/src/test/resources/ant/Resolve/dependencies.txt
----------------------------------------------------------------------
diff --git a/src/test/resources/ant/Resolve/dependencies.txt b/src/test/resources/ant/Resolve/dependencies.txt
new file mode 100644
index 0000000..f65dba0
--- /dev/null
+++ b/src/test/resources/ant/Resolve/dependencies.txt
@@ -0,0 +1,11 @@
+#
+# Copyright (c) 2012, 2014 Sonatype, Inc.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+
+# each line specifies one dependency
+org.eclipse.aether:aether-spi:0.9.0.v20140226:runtime  # a comment
+