You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by br...@apache.org on 2006/01/03 08:57:24 UTC
svn commit: r365567 - in /maven/plugins/trunk/maven-assembly-plugin/src/main:
java/org/apache/maven/plugin/assembly/AbstractAssemblyMojo.java
java/org/apache/maven/plugin/assembly/AbstractUnpackingMojo.java
resources/assemblies/jar-with-dependencies.xml
Author: brett
Date: Mon Jan 2 23:57:17 2006
New Revision: 365567
URL: http://svn.apache.org/viewcvs?rev=365567&view=rev
Log:
PR: MASSEMBLY-47
include modules and their dependencies in assembly when included in dependency sets
Modified:
maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/AbstractAssemblyMojo.java
maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/AbstractUnpackingMojo.java
maven/plugins/trunk/maven-assembly-plugin/src/main/resources/assemblies/jar-with-dependencies.xml
Modified: maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/AbstractAssemblyMojo.java
URL: http://svn.apache.org/viewcvs/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/AbstractAssemblyMojo.java?rev=365567&r1=365566&r2=365567&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/AbstractAssemblyMojo.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/AbstractAssemblyMojo.java Mon Jan 2 23:57:17 2006
@@ -16,6 +16,12 @@
* limitations under the License.
*/
+import org.apache.maven.artifact.Artifact;
+import org.apache.maven.artifact.handler.ArtifactHandler;
+import org.apache.maven.artifact.resolver.filter.AndArtifactFilter;
+import org.apache.maven.artifact.resolver.filter.ExcludesArtifactFilter;
+import org.apache.maven.artifact.resolver.filter.IncludesArtifactFilter;
+import org.apache.maven.artifact.resolver.filter.ScopeArtifactFilter;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugin.MojoFailureException;
import org.apache.maven.plugins.assembly.model.Assembly;
@@ -23,41 +29,35 @@
import org.apache.maven.plugins.assembly.model.FileItem;
import org.apache.maven.plugins.assembly.model.FileSet;
import org.apache.maven.plugins.assembly.model.io.xpp3.AssemblyXpp3Reader;
-import org.apache.maven.artifact.resolver.filter.AndArtifactFilter;
-import org.apache.maven.artifact.resolver.filter.ScopeArtifactFilter;
-import org.apache.maven.artifact.resolver.filter.IncludesArtifactFilter;
-import org.apache.maven.artifact.resolver.filter.ExcludesArtifactFilter;
-import org.apache.maven.artifact.Artifact;
-import org.apache.maven.artifact.handler.ArtifactHandler;
import org.apache.maven.project.MavenProject;
import org.apache.maven.project.MavenProjectHelper;
import org.codehaus.plexus.archiver.Archiver;
import org.codehaus.plexus.archiver.ArchiverException;
-import org.codehaus.plexus.archiver.war.WarArchiver;
-import org.codehaus.plexus.archiver.tar.TarArchiver;
import org.codehaus.plexus.archiver.manager.NoSuchArchiverException;
-import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
-import org.codehaus.plexus.util.StringUtils;
-import org.codehaus.plexus.util.IOUtil;
-import org.codehaus.plexus.util.FileUtils;
+import org.codehaus.plexus.archiver.tar.TarArchiver;
+import org.codehaus.plexus.archiver.war.WarArchiver;
import org.codehaus.plexus.util.DirectoryScanner;
+import org.codehaus.plexus.util.FileUtils;
+import org.codehaus.plexus.util.IOUtil;
+import org.codehaus.plexus.util.StringUtils;
import org.codehaus.plexus.util.introspection.ReflectionValueExtractor;
+import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
-import java.util.Iterator;
-import java.util.List;
-import java.util.ArrayList;
-import java.util.regex.Pattern;
-import java.util.regex.Matcher;
+import java.io.BufferedReader;
+import java.io.BufferedWriter;
import java.io.File;
-import java.io.IOException;
-import java.io.Reader;
-import java.io.FileReader;
import java.io.FileNotFoundException;
+import java.io.FileReader;
+import java.io.FileWriter;
+import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
-import java.io.BufferedReader;
-import java.io.BufferedWriter;
-import java.io.FileWriter;
+import java.io.Reader;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
/**
* @author <a href="mailto:brett@apache.org">Brett Porter</a>
@@ -123,7 +123,7 @@
* @readonly
*/
private File tempFile;
-
+
/**
* Directory for site generated.
*
@@ -138,7 +138,7 @@
* @parameter expression="${includeSite}" default-value="false"
*/
private boolean includeSite;
-
+
/**
* Set to false to exclude the assembly id from the assembly final name.
*
@@ -152,6 +152,7 @@
* Create the binary distribution.
*
* @throws org.apache.maven.plugin.MojoExecutionException
+ *
*/
public void execute()
throws MojoExecutionException, MojoFailureException
@@ -216,7 +217,7 @@
{
return finalName;
}
-
+
if ( appendAssemblyId )
{
return finalName + "-" + assembly.getId();
@@ -385,7 +386,8 @@
evaluateFileNameMapping( dependencySet.getOutputFileNameMapping(), artifact ) );
}
}
- else {
+ else
+ {
// would be better to have a way to find out when a specified include or exclude
// is never triggered and warn() it.
getLog().debug( "artifact: " + artifact + " not included" );
@@ -397,16 +399,19 @@
private void addDirectory( Archiver archiver, File directory, String output, String[] includes, List excludes )
throws IOException, XmlPullParserException, ArchiverException
{
- // TODO: more robust set of filters on added files in the archiver
- File componentsXml = new File( directory, ComponentsXmlArchiverFileFilter.COMPONENTS_XML_PATH );
- if ( componentsXml.exists() )
+ if ( directory.exists() )
{
- componentsXmlFilter.addComponentsXml( componentsXml );
- excludes = new ArrayList( excludes );
- excludes.add( ComponentsXmlArchiverFileFilter.COMPONENTS_XML_PATH );
- }
+ // TODO: more robust set of filters on added files in the archiver
+ File componentsXml = new File( directory, ComponentsXmlArchiverFileFilter.COMPONENTS_XML_PATH );
+ if ( componentsXml.exists() )
+ {
+ componentsXmlFilter.addComponentsXml( componentsXml );
+ excludes = new ArrayList( excludes );
+ excludes.add( ComponentsXmlArchiverFileFilter.COMPONENTS_XML_PATH );
+ }
- archiver.addDirectory( directory, output, includes, (String[]) excludes.toArray( EMPTY_STRING_ARRAY ) );
+ archiver.addDirectory( directory, output, includes, (String[]) excludes.toArray( EMPTY_STRING_ARRAY ) );
+ }
}
/**
@@ -416,6 +421,7 @@
* @param fileSets
* @param includeBaseDirecetory
* @throws org.codehaus.plexus.archiver.ArchiverException
+ *
*/
protected void processFileSets( Archiver archiver, List fileSets, boolean includeBaseDirecetory )
throws ArchiverException, IOException, XmlPullParserException
@@ -499,6 +505,7 @@
* @param archiver
* @param fileList
* @throws org.codehaus.plexus.archiver.ArchiverException
+ *
*/
protected void processFileList( Archiver archiver, List fileList, boolean includeBaseDirecetory )
throws ArchiverException, IOException
@@ -506,37 +513,37 @@
for ( Iterator i = fileList.iterator(); i.hasNext(); )
{
FileItem fileItem = (FileItem) i.next();
-
- File source = new File ( fileItem.getSource() );
-
+
+ File source = new File( fileItem.getSource() );
+
String outputDirectory = fileItem.getOutputDirectory();
-
+
if ( outputDirectory == null )
{
- outputDirectory = "";
+ outputDirectory = "";
}
-
+
String destName = fileItem.getDestName();
-
- if ( destName == null )
+
+ if ( destName == null )
{
- destName = source.getName();
+ destName = source.getName();
}
String lineEnding = getLineEndingCharacters( fileItem.getLineEnding() );
-
+
if ( lineEnding != null )
{
- this.copyReplacingLineEndings( source, this.tempFile, lineEnding );
- source = this.tempFile;
+ this.copyReplacingLineEndings( source, this.tempFile, lineEnding );
+ source = this.tempFile;
}
-
+
outputDirectory = getOutputDirectory( outputDirectory, includeBaseDirecetory );
-
- archiver.addFile( source , outputDirectory + "/" + destName, Integer.parseInt( fileItem.getFileMode() ) );
+
+ archiver.addFile( source, outputDirectory + "/" + destName, Integer.parseInt( fileItem.getFileMode() ) );
}
}
-
+
/**
* Evaluates Filename Mapping
*
@@ -544,6 +551,7 @@
* @param artifact
* @return expression
* @throws org.apache.maven.plugin.MojoExecutionException
+ *
*/
private static String evaluateFileNameMapping( String expression, Artifact artifact )
throws MojoExecutionException
@@ -635,7 +643,9 @@
* @param format Archive format
* @return archiver Archiver generated
* @throws org.codehaus.plexus.archiver.ArchiverException
+ *
* @throws org.codehaus.plexus.archiver.manager.NoSuchArchiverException
+ *
*/
private Archiver createArchiver( String format )
throws ArchiverException, NoSuchArchiverException
Modified: maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/AbstractUnpackingMojo.java
URL: http://svn.apache.org/viewcvs/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/AbstractUnpackingMojo.java?rev=365567&r1=365566&r2=365567&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/AbstractUnpackingMojo.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/AbstractUnpackingMojo.java Mon Jan 2 23:57:17 2006
@@ -16,8 +16,10 @@
* limitations under the License.
*/
+import org.apache.maven.artifact.Artifact;
import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.project.MavenProject;
import org.codehaus.plexus.archiver.ArchiverException;
import org.codehaus.plexus.archiver.UnArchiver;
import org.codehaus.plexus.archiver.manager.ArchiverManager;
@@ -32,8 +34,6 @@
import java.util.List;
import java.util.Map;
import java.util.Set;
-import org.apache.maven.artifact.Artifact;
-import org.apache.maven.project.MavenProject;
/**
* Base routines for assembly and unpack goals.
@@ -88,6 +88,15 @@
private List reactorProjects;
/**
+ * The executed project when the base was forked.
+ *
+ * @parameter expression="${executedProject}"
+ * @required
+ * @readonly
+ */
+ private MavenProject executedProject;
+
+ /**
* Retrieves all artifact dependencies within the reactor
*
* @return A HashSet of artifacts
@@ -96,16 +105,40 @@
{
Map dependencies = new HashMap();
+ // TODO: this is not mediating dependencies versions - first wins. Is there a way we can do that properly from here?
+ if ( executedProject != null )
+ {
+ Artifact artifact = executedProject.getArtifact();
+
+ if ( artifact.getFile() != null )
+ {
+ String key = artifact.getDependencyConflictId();
+
+ dependencies.put( key, artifact );
+ }
+ }
+
for ( Iterator i = reactorProjects.iterator(); i.hasNext(); )
{
MavenProject reactorProject = (MavenProject) i.next();
+ Artifact artifact = reactorProject.getArtifact();
+
+ if ( artifact.getFile() != null )
+ {
+ String key = artifact.getDependencyConflictId();
+
+ if ( !dependencies.containsKey( key ) )
+ {
+ dependencies.put( key, artifact );
+ }
+ }
+
for ( Iterator j = reactorProject.getArtifacts().iterator(); j.hasNext(); )
{
- Artifact artifact = (Artifact) j.next();
+ artifact = (Artifact) j.next();
- // TODO: [jc; 16-nov-05] Why doesn't this use artifact.getId()?
- String key = artifact.getGroupId() + ":" + artifact.getArtifactId() + ":" + artifact.getVersion();
+ String key = artifact.getDependencyConflictId();
if ( !dependencies.containsKey( key ) )
{
@@ -120,7 +153,7 @@
/**
* Unpacks the archive file.
*
- * @param file File to be unpacked.
+ * @param file File to be unpacked.
* @param location Location where to put the unpacked files.
*/
protected void unpack( File file, File location )
Modified: maven/plugins/trunk/maven-assembly-plugin/src/main/resources/assemblies/jar-with-dependencies.xml
URL: http://svn.apache.org/viewcvs/maven/plugins/trunk/maven-assembly-plugin/src/main/resources/assemblies/jar-with-dependencies.xml?rev=365567&r1=365566&r2=365567&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/main/resources/assemblies/jar-with-dependencies.xml (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/main/resources/assemblies/jar-with-dependencies.xml Mon Jan 2 23:57:17 2006
@@ -5,13 +5,6 @@
<format>jar</format>
</formats>
<includeBaseDirectory>false</includeBaseDirectory>
- <fileSets>
- <fileSet>
- <!-- TODO: use expressions instead: ${project.build.directory}, ${project.build.finalName}, or have a <build /> tag to include the built artifact -->
- <directory>target/classes</directory>
- <outputDirectory>/</outputDirectory>
- </fileSet>
- </fileSets>
<dependencySets>
<dependencySet>
<outputDirectory>/</outputDirectory>