svn commit: r1799020 - in /maven/plugins/trunk/maven-antrun-plugin/src: it/MANTRUN-192/ it/MANTRUN-192/pom.xml main/java/org/apache/maven/ant/tasks/DependencyFilesetsTask.java

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

svn commit: r1799020 - in /maven/plugins/trunk/maven-antrun-plugin/src: it/MANTRUN-192/ it/MANTRUN-192/pom.xml main/java/org/apache/maven/ant/tasks/DependencyFilesetsTask.java

gboue
Author: gboue
Date: Sat Jun 17 19:54:34 2017
New Revision: 1799020

URL: http://svn.apache.org/viewvc?rev=1799020&view=rev
Log:
[MANTRUN-192] filterArtifacts in DependencyFilesetsTask includes entire maven.local.repository

When there are no artifacts after filtering, Ant will include by default everything under the local repository (since there are no include patterns). Therefore, in this case, we need to exclude everything explicitly. For performance reasons, we need to add a dummy file to the include patterns, otherwise Ant will still traverse the whole directory before applying the exclusions.

Added:
    maven/plugins/trunk/maven-antrun-plugin/src/it/MANTRUN-192/
    maven/plugins/trunk/maven-antrun-plugin/src/it/MANTRUN-192/pom.xml   (with props)
Modified:
    maven/plugins/trunk/maven-antrun-plugin/src/main/java/org/apache/maven/ant/tasks/DependencyFilesetsTask.java

Added: maven/plugins/trunk/maven-antrun-plugin/src/it/MANTRUN-192/pom.xml
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-antrun-plugin/src/it/MANTRUN-192/pom.xml?rev=1799020&view=auto
==============================================================================
--- maven/plugins/trunk/maven-antrun-plugin/src/it/MANTRUN-192/pom.xml (added)
+++ maven/plugins/trunk/maven-antrun-plugin/src/it/MANTRUN-192/pom.xml Sat Jun 17 19:54:34 2017
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+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 xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>org.apache.maven.plugins.antrun</groupId>
+  <artifactId>MANTRUN-192</artifactId>
+  <packaging>pom</packaging>
+  <version>1.0</version>
+  <url>https://issues.apache.org/jira/browse/MANTRUN-192</url>
+  <description>Checks that creating a FileSet of the project dependencies also works when there are no dependencies.</description>
+  <build>
+    <plugins>
+      <plugin>
+        <artifactId>maven-antrun-plugin</artifactId>
+        <version>@pom.version@</version>
+        <executions>
+          <execution>
+            <goals>
+              <goal>run</goal>
+            </goals>
+            <phase>validate</phase>
+            <configuration>
+              <target>
+                <dependencyfilesets />
+                <property name="deps" refid="maven.project.dependencies"/>
+                <fail message="Dependency list should have been empty: ${deps}">
+                  <condition>
+                    <not>
+                      <equals arg1="${deps}" arg2=""/>
+                    </not>
+                  </condition>
+                </fail>
+              </target>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
+</project>

Propchange: maven/plugins/trunk/maven-antrun-plugin/src/it/MANTRUN-192/pom.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/plugins/trunk/maven-antrun-plugin/src/it/MANTRUN-192/pom.xml
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Modified: maven/plugins/trunk/maven-antrun-plugin/src/main/java/org/apache/maven/ant/tasks/DependencyFilesetsTask.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-antrun-plugin/src/main/java/org/apache/maven/ant/tasks/DependencyFilesetsTask.java?rev=1799020&r1=1799019&r2=1799020&view=diff
==============================================================================
--- maven/plugins/trunk/maven-antrun-plugin/src/main/java/org/apache/maven/ant/tasks/DependencyFilesetsTask.java (original)
+++ maven/plugins/trunk/maven-antrun-plugin/src/main/java/org/apache/maven/ant/tasks/DependencyFilesetsTask.java Sat Jun 17 19:54:34 2017
@@ -116,6 +116,14 @@ public class DependencyFilesetsTask
         ArtifactRepository localRepository = (ArtifactRepository) getProject().getReference( "maven.local.repository" );
         dependenciesFileSet.setDir( new File( localRepository.getBasedir() ) );
 
+        if ( depArtifacts.isEmpty() )
+        {
+            // For performance reasons in case of huge local repo, tell Ant to include a single thing, otherwise the
+            // whole directory is scanned (even though ** is excluded).
+            dependenciesFileSet.createInclude().setName( "." );
+            dependenciesFileSet.createExclude().setName( "**" );
+        }
+
         for ( Artifact artifact : depArtifacts )
         {
             String relativeArtifactPath = localRepository.pathOf( artifact );