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 );


Reply via email to