Excludes do not work as described on the Usage page
---------------------------------------------------
Key: MJAR-106
URL: http://jira.codehaus.org/browse/MJAR-106
Project: Maven 2.x Jar Plugin
Issue Type: Bug
Affects Versions: 2.2
Reporter: Michael Mattox
The jar plugin usage page gives an example:
{code:xml}
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<includes>
<include>**/service/*</include>
</includes>
</configuration>
</plugin>
{code}
If I use excludes, such as this:
{code:xml}
<configuration>
<excludes>
<exclude>**/*.properties</exclude>
</excludes>
</configuration>
{code}
It doesn't work. I get the properties in both my jar and my -tests.jar.
However, if I add executions to the plugin configuration, like this:
{code:xml}
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>jar</goal>
</goals>
<configuration>
<excludes>
<exclude>**/*.properties</exclude>
</excludes>
</configuration>
</execution>
</executions>
</plugin>
{code}
Then the properties are excluded form my test jar but NOT from my regular jar.
Here is some debug output:
{noformat}
[DEBUG] Configuring mojo 'org.apache.maven.plugins:maven-jar-plugin:2.2:jar' -->
[DEBUG] (f) classesDirectory =
C:\projects\company\projects\pam\workspace\mm-config\target\classes
[DEBUG] (f) defaultManifestFile =
C:\projects\company\projects\pam\workspace\mm-config\target\classes\META-INF\MANIFEST.MF
[DEBUG] (f) finalName = mm-config-1.0-SNAPSHOT
[DEBUG] (f) forceCreation = false
[DEBUG] (f) outputDirectory =
C:\projects\company\projects\pam\workspace\mm-config\target
[DEBUG] (f) project = MavenProject: company:mm-config:1.0-SNAPSHOT @
C:\projects\company\projects\pam\workspace\mm-config\pom.xml
[DEBUG] (f) useDefaultManifestFile = false
[DEBUG] -- end configuration --
[INFO] [jar:jar]
[DEBUG] isUp2date: false (Destination
C:\projects\company\projects\pam\workspace\mm-config\target\mm-config-1.0-SNAPSHOT.jar
not found.)
[INFO] Building jar:
C:\projects\company\projects\pam\workspace\mm-config\target\mm-config-1.0-SNAPSHOT.jar
[DEBUG] adding directory META-INF/
[DEBUG] adding entry META-INF/MANIFEST.MF
[DEBUG] adding directory commons/
[DEBUG] adding entry commons/applicationContext.xml
[DEBUG] adding entry database.properties
[DEBUG] adding entry log4j.xml
[DEBUG] adding entry messages-exceptions-commons.properties
[DEBUG] adding entry messages-warnings-commons.properties
[DEBUG] adding entry mm2-rmi.properties
[DEBUG] adding directory META-INF/maven/
[DEBUG] adding directory META-INF/maven/company/
[DEBUG] adding directory META-INF/maven/company/mm-config/
[DEBUG] adding entry META-INF/maven/company/mm-config/pom.xml
[DEBUG] adding entry META-INF/maven/company/mm-config/pom.properties
[DEBUG] company:mm-config:jar:1.0-SNAPSHOT (selected for null)
[DEBUG] Configuring mojo 'org.apache.maven.plugins:maven-jar-plugin:2.2:jar' -->
[DEBUG] (f) classesDirectory =
C:\projects\company\projects\pam\workspace\mm-config\target\classes
[DEBUG] (f) defaultManifestFile =
C:\projects\company\projects\pam\workspace\mm-config\target\classes\META-INF\MANIFEST.MF
[DEBUG] (f) excludes = [Ljava.lang.String;@24dd07a
[DEBUG] (f) finalName = mm-config-1.0-SNAPSHOT
[DEBUG] (f) forceCreation = false
[DEBUG] (f) outputDirectory =
C:\projects\company\projects\pam\workspace\mm-config\target
[DEBUG] (f) project = MavenProject: company:mm-config:1.0-SNAPSHOT @
C:\projects\company\projects\pam\workspace\mm-config\pom.xml
[DEBUG] (f) useDefaultManifestFile = false
[DEBUG] -- end configuration --
[INFO] [jar:jar {execution: default}]
[DEBUG] isUp2date: true
[DEBUG] Archive
C:\projects\company\projects\pam\workspace\mm-config\target\mm-config-1.0-SNAPSHOT.jar
is uptodate.
[DEBUG] company:mm-config:jar:1.0-SNAPSHOT (selected for null)
[DEBUG] Configuring mojo
'org.apache.maven.plugins:maven-jar-plugin:2.2:test-jar' -->
[DEBUG] (f) defaultManifestFile =
C:\projects\company\projects\pam\workspace\mm-config\target\classes\META-INF\MANIFEST.MF
[DEBUG] (f) excludes = [Ljava.lang.String;@24e7541
[DEBUG] (f) finalName = mm-config-1.0-SNAPSHOT
[DEBUG] (f) forceCreation = false
[DEBUG] (f) outputDirectory =
C:\projects\company\projects\pam\workspace\mm-config\target
[DEBUG] (f) project = MavenProject: company:mm-config:1.0-SNAPSHOT @
C:\projects\company\projects\pam\workspace\mm-config\pom.xml
[DEBUG] (f) testClassesDirectory =
C:\projects\company\projects\pam\workspace\mm-config\target\test-classes
[DEBUG] (f) useDefaultManifestFile = false
[DEBUG] -- end configuration --
[INFO] [jar:test-jar {execution: default}]
[DEBUG] isUp2date: false (Destination
C:\projects\company\projects\pam\workspace\mm-config\target\mm-config-1.0-SNAPSHOT-tests.jar
not found.)
[INFO] Building jar:
C:\projects\company\projects\pam\workspace\mm-config\target\mm-config-1.0-SNAPSHOT-tests.jar
[DEBUG] adding directory META-INF/
[DEBUG] adding entry META-INF/MANIFEST.MF
[DEBUG] adding directory commons/
[DEBUG] adding entry commons/applicationContext.xml
[DEBUG] adding entry log4j.xml
[DEBUG] adding directory META-INF/maven/
[DEBUG] adding directory META-INF/maven/company/
[DEBUG] adding directory META-INF/maven/company/mm-config/
[DEBUG] adding entry META-INF/maven/company/mm-config/pom.xml
[DEBUG] adding entry META-INF/maven/company/mm-config/pom.properties
{noformat}
The other thing I don't understand with this approach is that the jar plugin is
configured twice. First without excludes and the second time with excludes.
The second time the plugin says the jar is up to date. Why is jar:jar being
invoked twice? I assume it's because I defined the execution goal jar.
And why aren't the excludes used for the first jar:jar call??
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira