You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by pg...@apache.org on 2009/04/08 20:57:33 UTC
svn commit: r763350 - in /maven/plugins/trunk/maven-source-plugin/src:
it/jar-includes-excludes/ it/jar-includes-excludes/src/
it/jar-includes-excludes/src/main/ it/jar-includes-excludes/src/main/java/
it/jar-includes-excludes/src/main/resources/ it/ja...
Author: pgier
Date: Wed Apr 8 18:57:33 2009
New Revision: 763350
URL: http://svn.apache.org/viewvc?rev=763350&view=rev
Log:
[MSOURCES-33] Add includes and excludes parameters.
Added:
maven/plugins/trunk/maven-source-plugin/src/it/jar-includes-excludes/
maven/plugins/trunk/maven-source-plugin/src/it/jar-includes-excludes/pom.xml (with props)
maven/plugins/trunk/maven-source-plugin/src/it/jar-includes-excludes/src/
maven/plugins/trunk/maven-source-plugin/src/it/jar-includes-excludes/src/main/
maven/plugins/trunk/maven-source-plugin/src/it/jar-includes-excludes/src/main/java/
maven/plugins/trunk/maven-source-plugin/src/it/jar-includes-excludes/src/main/java/MyClass.java (with props)
maven/plugins/trunk/maven-source-plugin/src/it/jar-includes-excludes/src/main/java/MyClass2.java (with props)
maven/plugins/trunk/maven-source-plugin/src/it/jar-includes-excludes/src/main/resources/
maven/plugins/trunk/maven-source-plugin/src/it/jar-includes-excludes/src/main/resources/main.properties (with props)
maven/plugins/trunk/maven-source-plugin/src/it/jar-includes-excludes/src/test/
maven/plugins/trunk/maven-source-plugin/src/it/jar-includes-excludes/src/test/java/
maven/plugins/trunk/maven-source-plugin/src/it/jar-includes-excludes/src/test/java/MyTest.java (with props)
maven/plugins/trunk/maven-source-plugin/src/it/jar-includes-excludes/src/test/java/MyTest2.java (with props)
maven/plugins/trunk/maven-source-plugin/src/it/jar-includes-excludes/src/test/resources/
maven/plugins/trunk/maven-source-plugin/src/it/jar-includes-excludes/src/test/resources/test.properties (with props)
maven/plugins/trunk/maven-source-plugin/src/it/jar-includes-excludes/verify.bsh (with props)
Modified:
maven/plugins/trunk/maven-source-plugin/src/main/java/org/apache/maven/plugin/source/AbstractSourceJarMojo.java
Added: maven/plugins/trunk/maven-source-plugin/src/it/jar-includes-excludes/pom.xml
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-source-plugin/src/it/jar-includes-excludes/pom.xml?rev=763350&view=auto
==============================================================================
--- maven/plugins/trunk/maven-source-plugin/src/it/jar-includes-excludes/pom.xml (added)
+++ maven/plugins/trunk/maven-source-plugin/src/it/jar-includes-excludes/pom.xml Wed Apr 8 18:57:33 2009
@@ -0,0 +1,70 @@
+<?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>test</groupId>
+ <artifactId>jar</artifactId>
+ <version>1.0-SNAPSHOT</version>
+
+ <name>Test for jar</name>
+
+ <properties>
+ <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+ </properties>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-source-plugin</artifactId>
+ <version>@pom.version@</version>
+ <executions>
+ <execution>
+ <id>jar</id>
+ <goals>
+ <goal>jar</goal>
+ </goals>
+ <configuration>
+ <includes>
+ <include>MyClass2.java</include>
+ </includes>
+ </configuration>
+ </execution>
+ <execution>
+ <id>test-jar</id>
+ <goals>
+ <goal>test-jar</goal>
+ </goals>
+ <configuration>
+ <excludes>
+ <exclude>MyTest2.java</exclude>
+ </excludes>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+
+</project>
Propchange: maven/plugins/trunk/maven-source-plugin/src/it/jar-includes-excludes/pom.xml
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/plugins/trunk/maven-source-plugin/src/it/jar-includes-excludes/pom.xml
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Added: maven/plugins/trunk/maven-source-plugin/src/it/jar-includes-excludes/src/main/java/MyClass.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-source-plugin/src/it/jar-includes-excludes/src/main/java/MyClass.java?rev=763350&view=auto
==============================================================================
--- maven/plugins/trunk/maven-source-plugin/src/it/jar-includes-excludes/src/main/java/MyClass.java (added)
+++ maven/plugins/trunk/maven-source-plugin/src/it/jar-includes-excludes/src/main/java/MyClass.java Wed Apr 8 18:57:33 2009
@@ -0,0 +1,4 @@
+public class MyClass
+{
+
+}
Propchange: maven/plugins/trunk/maven-source-plugin/src/it/jar-includes-excludes/src/main/java/MyClass.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/plugins/trunk/maven-source-plugin/src/it/jar-includes-excludes/src/main/java/MyClass.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Added: maven/plugins/trunk/maven-source-plugin/src/it/jar-includes-excludes/src/main/java/MyClass2.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-source-plugin/src/it/jar-includes-excludes/src/main/java/MyClass2.java?rev=763350&view=auto
==============================================================================
--- maven/plugins/trunk/maven-source-plugin/src/it/jar-includes-excludes/src/main/java/MyClass2.java (added)
+++ maven/plugins/trunk/maven-source-plugin/src/it/jar-includes-excludes/src/main/java/MyClass2.java Wed Apr 8 18:57:33 2009
@@ -0,0 +1,4 @@
+public class MyClass2
+{
+
+}
Propchange: maven/plugins/trunk/maven-source-plugin/src/it/jar-includes-excludes/src/main/java/MyClass2.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/plugins/trunk/maven-source-plugin/src/it/jar-includes-excludes/src/main/java/MyClass2.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Added: maven/plugins/trunk/maven-source-plugin/src/it/jar-includes-excludes/src/main/resources/main.properties
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-source-plugin/src/it/jar-includes-excludes/src/main/resources/main.properties?rev=763350&view=auto
==============================================================================
(empty)
Propchange: maven/plugins/trunk/maven-source-plugin/src/it/jar-includes-excludes/src/main/resources/main.properties
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/plugins/trunk/maven-source-plugin/src/it/jar-includes-excludes/src/main/resources/main.properties
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Added: maven/plugins/trunk/maven-source-plugin/src/it/jar-includes-excludes/src/test/java/MyTest.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-source-plugin/src/it/jar-includes-excludes/src/test/java/MyTest.java?rev=763350&view=auto
==============================================================================
--- maven/plugins/trunk/maven-source-plugin/src/it/jar-includes-excludes/src/test/java/MyTest.java (added)
+++ maven/plugins/trunk/maven-source-plugin/src/it/jar-includes-excludes/src/test/java/MyTest.java Wed Apr 8 18:57:33 2009
@@ -0,0 +1,4 @@
+public class MyTest
+{
+
+}
Propchange: maven/plugins/trunk/maven-source-plugin/src/it/jar-includes-excludes/src/test/java/MyTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/plugins/trunk/maven-source-plugin/src/it/jar-includes-excludes/src/test/java/MyTest.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Added: maven/plugins/trunk/maven-source-plugin/src/it/jar-includes-excludes/src/test/java/MyTest2.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-source-plugin/src/it/jar-includes-excludes/src/test/java/MyTest2.java?rev=763350&view=auto
==============================================================================
--- maven/plugins/trunk/maven-source-plugin/src/it/jar-includes-excludes/src/test/java/MyTest2.java (added)
+++ maven/plugins/trunk/maven-source-plugin/src/it/jar-includes-excludes/src/test/java/MyTest2.java Wed Apr 8 18:57:33 2009
@@ -0,0 +1,4 @@
+public class MyTest2
+{
+
+}
Propchange: maven/plugins/trunk/maven-source-plugin/src/it/jar-includes-excludes/src/test/java/MyTest2.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/plugins/trunk/maven-source-plugin/src/it/jar-includes-excludes/src/test/java/MyTest2.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Added: maven/plugins/trunk/maven-source-plugin/src/it/jar-includes-excludes/src/test/resources/test.properties
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-source-plugin/src/it/jar-includes-excludes/src/test/resources/test.properties?rev=763350&view=auto
==============================================================================
(empty)
Propchange: maven/plugins/trunk/maven-source-plugin/src/it/jar-includes-excludes/src/test/resources/test.properties
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/plugins/trunk/maven-source-plugin/src/it/jar-includes-excludes/src/test/resources/test.properties
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Added: maven/plugins/trunk/maven-source-plugin/src/it/jar-includes-excludes/verify.bsh
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-source-plugin/src/it/jar-includes-excludes/verify.bsh?rev=763350&view=auto
==============================================================================
--- maven/plugins/trunk/maven-source-plugin/src/it/jar-includes-excludes/verify.bsh (added)
+++ maven/plugins/trunk/maven-source-plugin/src/it/jar-includes-excludes/verify.bsh Wed Apr 8 18:57:33 2009
@@ -0,0 +1,95 @@
+import java.io.*;
+import java.util.*;
+import java.util.jar.*;
+import java.util.regex.*;
+
+try
+{
+ File jarFile = new File( basedir, "target/jar-1.0-SNAPSHOT-sources.jar" );
+ System.out.println( "Checking for existence of " + jarFile );
+ if ( !jarFile.isFile() )
+ {
+ System.out.println( "FAILURE!" );
+ return false;
+ }
+
+ JarFile jar = new JarFile( jarFile );
+
+ String[] includedEntries = {
+ "META-INF/MANIFEST.MF",
+ "MyClass2.java"
+ };
+ for ( String included : includedEntries )
+ {
+ System.out.println( "Checking for existence of " + included );
+ if ( jar.getEntry( included ) == null )
+ {
+ System.out.println( "FAILURE!" );
+ return false;
+ }
+ }
+
+ String[] excludedEntries = {
+ "MyTest.java",
+ "test.properties",
+ "MyClass.java",
+ "main.properties",
+ };
+ for ( String excluded : excludedEntries )
+ {
+ System.out.println( "Checking for absence of " + excluded );
+ if ( jar.getEntry( excluded ) != null )
+ {
+ System.out.println( "FAILURE!" );
+ return false;
+ }
+ }
+
+
+ File jarFile = new File( basedir, "target/jar-1.0-SNAPSHOT-test-sources.jar" );
+ System.out.println( "Checking for existence of " + jarFile );
+ if ( !jarFile.isFile() )
+ {
+ System.out.println( "FAILURE!" );
+ return false;
+ }
+
+ JarFile jar = new JarFile( jarFile );
+
+ String[] includedEntries = {
+ "META-INF/MANIFEST.MF",
+ "MyTest.java",
+ "test.properties",
+ };
+ for ( String included : includedEntries )
+ {
+ System.out.println( "Checking for existence of " + included );
+ if ( jar.getEntry( included ) == null )
+ {
+ System.out.println( "FAILURE!" );
+ return false;
+ }
+ }
+
+ String[] excludedEntries = {
+ "MyTest2.java",
+ "MyClass.java"
+ };
+ for ( String excluded : excludedEntries )
+ {
+ System.out.println( "Checking for absence of " + excluded );
+ if ( jar.getEntry( excluded ) != null )
+ {
+ System.out.println( "FAILURE!" );
+ return false;
+ }
+ }
+
+}
+catch( Throwable t )
+{
+ t.printStackTrace();
+ return false;
+}
+
+return true;
Propchange: maven/plugins/trunk/maven-source-plugin/src/it/jar-includes-excludes/verify.bsh
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/plugins/trunk/maven-source-plugin/src/it/jar-includes-excludes/verify.bsh
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Modified: maven/plugins/trunk/maven-source-plugin/src/main/java/org/apache/maven/plugin/source/AbstractSourceJarMojo.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-source-plugin/src/main/java/org/apache/maven/plugin/source/AbstractSourceJarMojo.java?rev=763350&r1=763349&r2=763350&view=diff
==============================================================================
--- maven/plugins/trunk/maven-source-plugin/src/main/java/org/apache/maven/plugin/source/AbstractSourceJarMojo.java (original)
+++ maven/plugins/trunk/maven-source-plugin/src/main/java/org/apache/maven/plugin/source/AbstractSourceJarMojo.java Wed Apr 8 18:57:33 2009
@@ -42,20 +42,44 @@
/**
* Base class for bundling sources into a jar archive.
- *
+ *
* @version $Id$
* @since 2.0.3
*/
public abstract class AbstractSourceJarMojo
extends AbstractMojo
{
- private static final String[] DEFAULT_INCLUDES = new String[]{"**/*"};
+ private static final String[] DEFAULT_INCLUDES = new String[] { "**/*" };
+
+ private static final String[] DEFAULT_EXCLUDES = new String[] {};
+
+ /**
+ * List of files to include. Specified as fileset patterns which are relative to the input directory whose contents
+ * is being packaged into the JAR.
+ *
+ * @parameter
+ */
+ private String[] includes;
+
+ /**
+ * List of files to exclude. Specified as fileset patterns which are relative to the input directory whose contents
+ * is being packaged into the JAR.
+ *
+ * @parameter
+ */
+ private String[] excludes;
+
+ /**
+ * Exclude commonly excluded files such as SCM configuration. These are defined in the plexus
+ * FileUtils.getDefaultExcludes()
+ *
+ * @parameter default-value="true"
+ */
+ private boolean useDefaultExcludes;
- private static final String[] DEFAULT_EXCLUDES = new String[]{};
-
/**
* The Maven Project Object
- *
+ *
* @parameter expression="${project}"
* @readonly
* @required
@@ -70,17 +94,17 @@
private JarArchiver jarArchiver;
/**
- * The archive configuration to use.
- * See <a href="http://maven.apache.org/shared/maven-archiver/index.html">Maven Archiver Reference</a>.
- *
+ * The archive configuration to use. See <a href="http://maven.apache.org/shared/maven-archiver/index.html">Maven
+ * Archiver Reference</a>.
+ *
* @parameter
* @since 2.1
*/
private MavenArchiveConfiguration archive = new MavenArchiveConfiguration();
/**
- * Path to the default MANIFEST file to use. It will be used if
- * <code>useDefaultManifestFile</code> is set to <code>true</code>.
+ * Path to the default MANIFEST file to use. It will be used if <code>useDefaultManifestFile</code> is set to
+ * <code>true</code>.
*
* @parameter expression="${project.build.outputDirectory}/META-INF/MANIFEST.MF"
* @required
@@ -90,8 +114,7 @@
private File defaultManifestFile;
/**
- * Set this to <code>true</code> to enable the use of the <code>defaultManifestFile</code>.
- * <br/>
+ * Set this to <code>true</code> to enable the use of the <code>defaultManifestFile</code>. <br/>
*
* @parameter default-value="false"
* @since 2.1
@@ -199,7 +222,7 @@
{
if ( !"pom".equals( p.getPackaging() ) )
{
- packageSources( Arrays.asList( new Object[]{p} ) );
+ packageSources( Arrays.asList( new Object[] { p } ) );
}
}
@@ -234,7 +257,7 @@
getLog().info( "Adding existing MANIFEST to archive. Found under: " + defaultManifestFile.getPath() );
archive.setManifestFile( defaultManifestFile );
}
-
+
File outputFile = new File( outputDirectory, finalName + "-" + getClassifier() + getExtension() );
try
{
@@ -292,7 +315,7 @@
if ( sourceDirectory.exists() )
{
- addDirectory( archiver, sourceDirectory, DEFAULT_INCLUDES, FileUtils.getDefaultExcludes() );
+ addDirectory( archiver, sourceDirectory, getCombinedIncludes( null ), getCombinedExcludes( null ) );
}
}
@@ -309,30 +332,12 @@
}
List resourceIncludes = resource.getIncludes();
- String includes[];
- if ( resourceIncludes == null || resourceIncludes.size() == 0 )
- {
- includes = DEFAULT_INCLUDES;
- }
- else
- {
- includes = (String[]) resourceIncludes.toArray( new String[resourceIncludes.size()] );
- }
+
+ String[] combinedIncludes = getCombinedIncludes( resourceIncludes );
List resourceExcludes = resource.getExcludes();
- String[] excludes;
- if ( resourceExcludes == null || resourceExcludes.size() == 0 )
- {
- excludes = FileUtils.getDefaultExcludes();
- }
- else
- {
- List allExcludes = new ArrayList();
- allExcludes.addAll( FileUtils.getDefaultExcludesAsList() );
- allExcludes.addAll( resourceExcludes );
- excludes = (String[]) allExcludes.toArray( new String[allExcludes.size()] );
- }
+ String[] combinedExcludes = getCombinedExcludes( resourceExcludes );
String targetPath = resource.getTargetPath();
if ( targetPath != null )
@@ -341,11 +346,11 @@
{
targetPath += "/";
}
- addDirectory( archiver, sourceDirectory, targetPath, includes, excludes );
+ addDirectory( archiver, sourceDirectory, targetPath, combinedIncludes, combinedExcludes );
}
else
{
- addDirectory( archiver, sourceDirectory, includes, excludes );
+ addDirectory( archiver, sourceDirectory, combinedIncludes, combinedExcludes );
}
}
}
@@ -355,7 +360,7 @@
{
MavenArchiver archiver = new MavenArchiver();
archiver.setArchiver( jarArchiver );
-
+
if ( project.getBuild() != null )
{
List resources = project.getBuild().getResources();
@@ -366,7 +371,8 @@
if ( r.getDirectory().endsWith( "maven-shared-archive-resources" ) )
{
- addDirectory( archiver.getArchiver(), new File( r.getDirectory() ), DEFAULT_INCLUDES, DEFAULT_EXCLUDES );
+ addDirectory( archiver.getArchiver(), new File( r.getDirectory() ), getCombinedIncludes( null ),
+ getCombinedExcludes( null ) );
}
}
}
@@ -420,4 +426,69 @@
{
return "java-source";
}
+
+ /**
+ * Combines the includes parameter and additional includes. Defaults to {@link #DEFAULT_INCLUDES} If the
+ * additionalIncludes parameter is null, it is not added to the combined includes.
+ *
+ * @param additionalIncludes The includes specified in the pom resources section
+ * @return The combined array of includes.
+ */
+ private String[] getCombinedIncludes( List additionalIncludes )
+ {
+ ArrayList combinedIncludes = new ArrayList();
+
+ if ( includes != null && includes.length > 0 )
+ {
+ combinedIncludes.addAll( Arrays.asList( includes ) );
+ }
+
+ if ( additionalIncludes != null && additionalIncludes.size() > 0 )
+ {
+ combinedIncludes.addAll( additionalIncludes );
+ }
+
+ // If there are no other includes, use the default.
+ if ( combinedIncludes.size() == 0 )
+ {
+ combinedIncludes.addAll( Arrays.asList( DEFAULT_INCLUDES ) );
+ }
+
+ return (String[]) combinedIncludes.toArray( new String[combinedIncludes.size()] );
+ }
+
+ /**
+ * Combines the user parameter {@link #excludes}, the default excludes from plexus FileUtils,
+ * and the contents of the parameter addionalExcludes.
+ *
+ * @param additionalExcludes Additional excludes to add to the array
+ * @return The combined list of excludes.
+ */
+
+ private String[] getCombinedExcludes( List additionalExcludes )
+ {
+ ArrayList combinedExcludes = new ArrayList();
+
+ if ( useDefaultExcludes )
+ {
+ combinedExcludes.addAll( FileUtils.getDefaultExcludesAsList() );
+ }
+
+ if ( excludes != null && excludes.length > 0 )
+ {
+ combinedExcludes.addAll( Arrays.asList( excludes ) );
+ }
+
+ if ( additionalExcludes != null && additionalExcludes.size() > 0 )
+ {
+ combinedExcludes.addAll( additionalExcludes );
+ }
+
+ if ( combinedExcludes.size() == 0 )
+ {
+ combinedExcludes.addAll( Arrays.asList( DEFAULT_EXCLUDES ) );
+ }
+
+ return (String[]) combinedExcludes.toArray( new String[combinedExcludes.size()] );
+ }
}