You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by jd...@apache.org on 2006/08/02 02:28:08 UTC
svn commit: r427819 [1/2] - in /maven/plugins/branches/MASSEMBLY-124/src:
main/java/org/apache/maven/plugin/assembly/
main/java/org/apache/maven/plugin/assembly/archive/phase/
main/java/org/apache/maven/plugin/assembly/archive/task/
main/java/org/apach...
Author: jdcasey
Date: Tue Aug 1 17:28:06 2006
New Revision: 427819
URL: http://svn.apache.org/viewvc?rev=427819&view=rev
Log:
Almost finished unit testing the assembler phases. Adding more unit tests, a refactoring of the module-set assembler phase, and a few other minor bugfixes.
Added:
maven/plugins/branches/MASSEMBLY-124/src/test/java/org/apache/maven/plugin/assembly/archive/phase/FileItemAssemblyPhaseTest.java (with props)
maven/plugins/branches/MASSEMBLY-124/src/test/java/org/apache/maven/plugin/assembly/archive/phase/ModuleSetAssemblyPhaseTest.java (with props)
maven/plugins/branches/MASSEMBLY-124/src/test/java/org/apache/maven/plugin/assembly/archive/phase/RepositoryAssemblyPhaseTest.java (with props)
Modified:
maven/plugins/branches/MASSEMBLY-124/src/main/java/org/apache/maven/plugin/assembly/AssemblerConfigurationSource.java
maven/plugins/branches/MASSEMBLY-124/src/main/java/org/apache/maven/plugin/assembly/archive/phase/DependencySetAssemblyPhase.java
maven/plugins/branches/MASSEMBLY-124/src/main/java/org/apache/maven/plugin/assembly/archive/phase/FileItemAssemblyPhase.java
maven/plugins/branches/MASSEMBLY-124/src/main/java/org/apache/maven/plugin/assembly/archive/phase/ModuleSetAssemblyPhase.java
maven/plugins/branches/MASSEMBLY-124/src/main/java/org/apache/maven/plugin/assembly/archive/phase/RepositoryAssemblyPhase.java
maven/plugins/branches/MASSEMBLY-124/src/main/java/org/apache/maven/plugin/assembly/archive/task/AddArtifactTask.java
maven/plugins/branches/MASSEMBLY-124/src/main/java/org/apache/maven/plugin/assembly/archive/task/AddFileSetsTask.java
maven/plugins/branches/MASSEMBLY-124/src/main/java/org/apache/maven/plugin/assembly/io/DefaultAssemblyReader.java
maven/plugins/branches/MASSEMBLY-124/src/main/java/org/apache/maven/plugin/assembly/mojos/AbstractAssemblyMojo.java
maven/plugins/branches/MASSEMBLY-124/src/main/java/org/apache/maven/plugin/assembly/repository/DefaultRepositoryAssembler.java
maven/plugins/branches/MASSEMBLY-124/src/main/java/org/apache/maven/plugin/assembly/utils/FilterUtils.java
maven/plugins/branches/MASSEMBLY-124/src/main/mdo/component.mdo
maven/plugins/branches/MASSEMBLY-124/src/main/mdo/descriptor.mdo
maven/plugins/branches/MASSEMBLY-124/src/test/java/org/apache/maven/plugin/assembly/archive/phase/DependencySetAssemblyPhaseTest.java
maven/plugins/branches/MASSEMBLY-124/src/test/java/org/apache/maven/plugin/assembly/archive/phase/FileSetAssemblyPhaseTest.java
maven/plugins/branches/MASSEMBLY-124/src/test/java/org/apache/maven/plugin/assembly/archive/task/AddArtifactTaskTest.java
maven/plugins/branches/MASSEMBLY-124/src/test/java/org/apache/maven/plugin/assembly/archive/task/testutils/MockAndControlForAddArtifactTask.java
maven/plugins/branches/MASSEMBLY-124/src/test/java/org/apache/maven/plugin/assembly/archive/task/testutils/MockAndControlForAddFileSetsTask.java
maven/plugins/branches/MASSEMBLY-124/src/test/java/org/apache/maven/plugin/assembly/io/DefaultAssemblyReaderTest.java
maven/plugins/branches/MASSEMBLY-124/src/test/java/org/apache/maven/plugin/assembly/testutils/TestFileManager.java
maven/plugins/branches/MASSEMBLY-124/src/test/java/org/apache/maven/plugin/assembly/utils/AssemblyFileUtilsTest.java
maven/plugins/branches/MASSEMBLY-124/src/test/java/org/apache/maven/plugin/assembly/utils/FilterUtilsTest.java
Modified: maven/plugins/branches/MASSEMBLY-124/src/main/java/org/apache/maven/plugin/assembly/AssemblerConfigurationSource.java
URL: http://svn.apache.org/viewvc/maven/plugins/branches/MASSEMBLY-124/src/main/java/org/apache/maven/plugin/assembly/AssemblerConfigurationSource.java?rev=427819&r1=427818&r2=427819&view=diff
==============================================================================
--- maven/plugins/branches/MASSEMBLY-124/src/main/java/org/apache/maven/plugin/assembly/AssemblerConfigurationSource.java (original)
+++ maven/plugins/branches/MASSEMBLY-124/src/main/java/org/apache/maven/plugin/assembly/AssemblerConfigurationSource.java Tue Aug 1 17:28:06 2006
@@ -53,4 +53,6 @@
List getReactorProjects();
+ List getRemoteRepositories();
+
}
Modified: maven/plugins/branches/MASSEMBLY-124/src/main/java/org/apache/maven/plugin/assembly/archive/phase/DependencySetAssemblyPhase.java
URL: http://svn.apache.org/viewvc/maven/plugins/branches/MASSEMBLY-124/src/main/java/org/apache/maven/plugin/assembly/archive/phase/DependencySetAssemblyPhase.java?rev=427819&r1=427818&r2=427819&view=diff
==============================================================================
--- maven/plugins/branches/MASSEMBLY-124/src/main/java/org/apache/maven/plugin/assembly/archive/phase/DependencySetAssemblyPhase.java (original)
+++ maven/plugins/branches/MASSEMBLY-124/src/main/java/org/apache/maven/plugin/assembly/archive/phase/DependencySetAssemblyPhase.java Tue Aug 1 17:28:06 2006
@@ -1,18 +1,11 @@
package org.apache.maven.plugin.assembly.archive.phase;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Set;
-
import org.apache.maven.artifact.Artifact;
import org.apache.maven.plugin.assembly.AssemblerConfigurationSource;
import org.apache.maven.plugin.assembly.archive.ArchiveCreationException;
import org.apache.maven.plugin.assembly.archive.task.AddArtifactTask;
import org.apache.maven.plugin.assembly.filter.AssemblyScopeArtifactFilter;
import org.apache.maven.plugin.assembly.format.AssemblyFormattingException;
-import org.apache.maven.plugin.assembly.utils.AssemblyFormatUtils;
import org.apache.maven.plugin.assembly.utils.FilterUtils;
import org.apache.maven.plugins.assembly.model.Assembly;
import org.apache.maven.plugins.assembly.model.DependencySet;
@@ -20,6 +13,12 @@
import org.codehaus.plexus.archiver.Archiver;
import org.codehaus.plexus.logging.AbstractLogEnabled;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Set;
+
/**
* @plexus.component role="org.apache.maven.plugin.assembly.archive.phase.AssemblyArchiverPhase"
* role-hint="dependency-sets"
@@ -49,11 +48,6 @@
{
MavenProject project = configSource.getProject();
- String destDirectory = dependencySet.getOutputDirectory();
-
- destDirectory = AssemblyFormatUtils.getOutputDirectory( destDirectory, project, configSource.getFinalName(),
- includeBaseDirectory );
-
getLogger().info( "Processing DependencySet" );
Set dependencyArtifacts = getDependencyArtifacts( project, dependencySet );
@@ -62,18 +56,14 @@
{
Artifact artifact = (Artifact) j.next();
- String fileNameMapping = AssemblyFormatUtils.evaluateFileNameMapping( dependencySet
- .getOutputFileNameMapping(), artifact );
-
- String outputLocation = destDirectory + fileNameMapping;
-
- AddArtifactTask task = new AddArtifactTask( artifact, outputLocation );
-
- int dirMode = Integer.parseInt( dependencySet.getDirectoryMode(), 8 );
- int fileMode = Integer.parseInt( dependencySet.getFileMode(), 8 );
+ AddArtifactTask task = new AddArtifactTask( artifact );
- task.setDirectoryMode( dirMode );
- task.setFileMode( fileMode );
+ task.setProject( project );
+ task.setOutputDirectory( dependencySet.getOutputDirectory() );
+ task.setFileNameMapping( dependencySet.getOutputFileNameMapping() );
+ task.setIncludeBaseDirectory( includeBaseDirectory );
+ task.setDirectoryMode( dependencySet.getDirectoryMode() );
+ task.setFileMode( dependencySet.getFileMode() );
task.setUnpack( dependencySet.isUnpack() );
task.execute( archiver, configSource );
Modified: maven/plugins/branches/MASSEMBLY-124/src/main/java/org/apache/maven/plugin/assembly/archive/phase/FileItemAssemblyPhase.java
URL: http://svn.apache.org/viewvc/maven/plugins/branches/MASSEMBLY-124/src/main/java/org/apache/maven/plugin/assembly/archive/phase/FileItemAssemblyPhase.java?rev=427819&r1=427818&r2=427819&view=diff
==============================================================================
--- maven/plugins/branches/MASSEMBLY-124/src/main/java/org/apache/maven/plugin/assembly/archive/phase/FileItemAssemblyPhase.java (original)
+++ maven/plugins/branches/MASSEMBLY-124/src/main/java/org/apache/maven/plugin/assembly/archive/phase/FileItemAssemblyPhase.java Tue Aug 1 17:28:06 2006
@@ -76,7 +76,7 @@
try
{
- archiver.addFile( source, target, Integer.parseInt( fileItem.getFileMode() ) );
+ archiver.addFile( source, target, Integer.parseInt( fileItem.getFileMode(), 8 ) );
}
catch ( ArchiverException e )
{
Modified: maven/plugins/branches/MASSEMBLY-124/src/main/java/org/apache/maven/plugin/assembly/archive/phase/ModuleSetAssemblyPhase.java
URL: http://svn.apache.org/viewvc/maven/plugins/branches/MASSEMBLY-124/src/main/java/org/apache/maven/plugin/assembly/archive/phase/ModuleSetAssemblyPhase.java?rev=427819&r1=427818&r2=427819&view=diff
==============================================================================
--- maven/plugins/branches/MASSEMBLY-124/src/main/java/org/apache/maven/plugin/assembly/archive/phase/ModuleSetAssemblyPhase.java (original)
+++ maven/plugins/branches/MASSEMBLY-124/src/main/java/org/apache/maven/plugin/assembly/archive/phase/ModuleSetAssemblyPhase.java Tue Aug 1 17:28:06 2006
@@ -1,23 +1,11 @@
package org.apache.maven.plugin.assembly.archive.phase;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Set;
-
import org.apache.maven.artifact.Artifact;
-import org.apache.maven.artifact.resolver.filter.AndArtifactFilter;
import org.apache.maven.plugin.assembly.AssemblerConfigurationSource;
import org.apache.maven.plugin.assembly.archive.ArchiveCreationException;
import org.apache.maven.plugin.assembly.archive.task.AddArtifactTask;
import org.apache.maven.plugin.assembly.archive.task.AddFileSetsTask;
-import org.apache.maven.plugin.assembly.filter.AssemblyExcludesArtifactFilter;
-import org.apache.maven.plugin.assembly.filter.AssemblyIncludesArtifactFilter;
import org.apache.maven.plugin.assembly.format.AssemblyFormattingException;
-import org.apache.maven.plugin.assembly.utils.AssemblyFormatUtils;
import org.apache.maven.plugin.assembly.utils.FilterUtils;
import org.apache.maven.plugin.assembly.utils.ProjectUtils;
import org.apache.maven.plugins.assembly.model.Assembly;
@@ -25,163 +13,216 @@
import org.apache.maven.plugins.assembly.model.ModuleSet;
import org.apache.maven.plugins.assembly.model.ModuleSources;
import org.apache.maven.project.MavenProject;
+import org.apache.maven.project.MavenProjectBuilder;
+import org.apache.maven.project.ProjectBuildingException;
import org.apache.maven.wagon.PathUtils;
import org.codehaus.plexus.archiver.Archiver;
import org.codehaus.plexus.logging.AbstractLogEnabled;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Set;
+
/**
- * @plexus.component role="org.apache.maven.plugin.assembly.archive.phase.AssemblyArchiverPhase"
- * role-hint="module-sets"
+ * @plexus.component role="org.apache.maven.plugin.assembly.archive.phase.AssemblyArchiverPhase" role-hint="module-sets"
*/
public class ModuleSetAssemblyPhase
extends AbstractLogEnabled
implements AssemblyArchiverPhase
{
+ /**
+ * @plexus.requirement
+ */
+ private MavenProjectBuilder projectBuilder;
+
+ public ModuleSetAssemblyPhase()
+ {
+ // needed for plexus
+ }
+
+ public ModuleSetAssemblyPhase( MavenProjectBuilder projectBuilder )
+ {
+ this.projectBuilder = projectBuilder;
+ }
+
public void execute( Assembly assembly, Archiver archiver, AssemblerConfigurationSource configSource )
throws ArchiveCreationException, AssemblyFormattingException
{
List moduleSets = assembly.getModuleSets();
- MavenProject project = configSource.getProject();
+
boolean includeBaseDirectory = assembly.isIncludeBaseDirectory();
for ( Iterator i = moduleSets.iterator(); i.hasNext(); )
{
- ModuleSet moduleSet = (ModuleSet) i.next();
+ ModuleSet moduleSet = ( ModuleSet ) i.next();
- AndArtifactFilter moduleFilter = new AndArtifactFilter();
+ Set moduleProjects = getModuleProjects( moduleSet, configSource );
- if ( !moduleSet.getIncludes().isEmpty() )
- {
- moduleFilter.add( new AssemblyIncludesArtifactFilter( moduleSet.getIncludes() ) );
- }
- if ( !moduleSet.getExcludes().isEmpty() )
- {
- moduleFilter.add( new AssemblyExcludesArtifactFilter( moduleSet.getExcludes() ) );
- }
+ addModuleSourceFileSets( moduleSet.getSources(), moduleProjects, archiver, configSource,
+ includeBaseDirectory );
- Set allModuleProjects;
- try
- {
- allModuleProjects = ProjectUtils.getProjectModules( project, configSource.getReactorProjects(),
- getLogger() );
- }
- catch ( IOException e )
- {
- throw new ArchiveCreationException( "Error retrieving module-set for project: " + project.getId()
- + ": " + e.getMessage(), e );
- }
-
- Set moduleProjects = new HashSet( allModuleProjects );
+ addModuleBinaries( moduleSet.getBinaries(), moduleProjects, archiver, configSource, includeBaseDirectory );
+ }
+ }
- FilterUtils.filterProjects( moduleProjects, moduleSet.getIncludes(), moduleSet.getExcludes(), false );
+ protected void addModuleBinaries( ModuleBinaries binaries, Set moduleProjects, Archiver archiver,
+ AssemblerConfigurationSource configSource, boolean includeBaseDirectory )
+ throws ArchiveCreationException, AssemblyFormattingException
+ {
+ if ( binaries == null )
+ {
+ return;
+ }
- List moduleFileSets = new ArrayList();
+ Set visitedArtifacts = new HashSet();
+
+ for ( Iterator j = moduleProjects.iterator(); j.hasNext(); )
+ {
+ MavenProject project = ( MavenProject ) j.next();
+ Artifact artifact = project.getArtifact();
- for ( Iterator j = moduleProjects.iterator(); j.hasNext(); )
+ addArtifact( artifact, project, archiver, configSource, binaries, includeBaseDirectory );
+
+ visitedArtifacts.add( artifact.getDependencyConflictId() );
+ }
+
+ if ( binaries.isIncludeDependencies() )
+ {
+ // FIXME: This will produce unpredictable results when module dependencies have a version conflict.
+ getLogger().warn( "NOTE: Currently, inclusion of module dependencies may produce unpredictable " +
+ "results if a version conflict occurs." );
+
+ for ( Iterator it = moduleProjects.iterator(); it.hasNext(); )
{
- MavenProject moduleProject = (MavenProject) j.next();
+ MavenProject moduleProject = ( MavenProject ) it.next();
- ModuleSources sources = moduleSet.getSources();
- if ( sources != null )
- {
- sources.setDirectory( PathUtils.toRelative( moduleProject.getBasedir(), sources.getDirectory() ) );
+ Set binaryDependencies = moduleProject.getArtifacts();
- moduleFileSets.add( sources );
- }
+ List includes = binaries.getIncludes();
+
+ // we don't need to include dependencies which have already been found.
+ List excludes = collectExcludesFromQueuedArtifacts( visitedArtifacts, binaries.getExcludes() );
- ModuleBinaries binaries = moduleSet.getBinaries();
+ FilterUtils.filterArtifacts( binaryDependencies, includes, excludes, true, Collections.EMPTY_LIST,
+ getLogger() );
- if ( binaries != null )
+ for ( Iterator binDepIterator = binaryDependencies.iterator(); binDepIterator.hasNext(); )
{
- Artifact moduleArtifact = moduleProject.getArtifact();
-
- if ( moduleArtifact.getFile() == null )
+ Artifact artifact = ( Artifact ) binDepIterator.next();
+ MavenProject project;
+ try
{
- throw new ArchiveCreationException(
- "Included module: "
- + moduleProject.getId()
- + " does not have an artifact with a file. Please ensure the package phase is run before the assembly is generated." );
+ project = projectBuilder.buildFromRepository( artifact, configSource.getRemoteRepositories(),
+ configSource.getLocalRepository() );
}
+ catch ( ProjectBuildingException e )
+ {
+ throw new ArchiveCreationException( "Error retrieving POM of module-dependency: " + artifact.getId()
+ + "; Reason: " + e.getMessage(), e );
+ }
+
+ addArtifact( artifact, project, archiver, configSource, binaries, includeBaseDirectory );
+
+ visitedArtifacts.add( artifact.getDependencyConflictId() );
+ }
+ }
+ }
+ }
- String fileNameMapping = AssemblyFormatUtils.evaluateFileNameMapping( binaries
- .getOutputFileNameMapping(), moduleArtifact );
-
- String output = binaries.getOutputDirectory();
- output = AssemblyFormatUtils.getOutputDirectory( output, moduleProject,
- configSource.getFinalName(), includeBaseDirectory );
+ protected List collectExcludesFromQueuedArtifacts( Set visitedArtifacts, List binaryExcludes )
+ {
+ List excludes = binaryExcludes;
+
+ if ( excludes == null )
+ {
+ excludes = new ArrayList();
+ }
+ else
+ {
+ excludes = new ArrayList( excludes );
+ }
+
+ for ( Iterator it = visitedArtifacts.iterator(); it.hasNext(); )
+ {
+ excludes.add( it.next() );
+ }
+
+ return excludes;
+ }
- String outputLocation = output + fileNameMapping;
+ protected void addArtifact( Artifact artifact, MavenProject project, Archiver archiver,
+ AssemblerConfigurationSource configSource, ModuleBinaries binaries, boolean includeBaseDirectory )
+ throws ArchiveCreationException, AssemblyFormattingException
+ {
+ if ( artifact.getFile() == null )
+ {
+ throw new ArchiveCreationException( "Artifact: " + artifact.getId()
+ + " (included by module) does not have an artifact with a file. "
+ + "Please ensure the package phase is run before the assembly is generated." );
+ }
- int fileMode = Integer.parseInt( binaries.getFileMode(), 8 );
- int dirMode = Integer.parseInt( binaries.getDirectoryMode(), 8 );
+ AddArtifactTask task = new AddArtifactTask( artifact );
- getLogger().debug(
- "ModuleSet[" + output + "]" + " dir perms: "
- + Integer.toString( archiver.getDefaultDirectoryMode(), 8 )
- + " file perms: " + Integer.toString( archiver.getDefaultFileMode(), 8 ) );
+ task.setFileNameMapping( binaries.getOutputFileNameMapping() );
+ task.setIncludeBaseDirectory( includeBaseDirectory );
+ task.setOutputDirectory( binaries.getOutputDirectory() );
+ task.setProject( project );
+ task.setDirectoryMode( binaries.getDirectoryMode() );
+ task.setFileMode( binaries.getFileMode() );
+ task.setUnpack( binaries.isUnpack() );
- AddArtifactTask task = new AddArtifactTask( moduleArtifact, outputLocation );
+ task.execute( archiver, configSource );
+ }
- task.setDirectoryMode( dirMode );
- task.setFileMode( fileMode );
- task.setUnpack( binaries.isUnpack() );
-
- task.execute( archiver, configSource );
-
- if ( binaries.isIncludeDependencies() )
- {
- Set binaryDependencies = moduleProject.getArtifacts();
+ protected void addModuleSourceFileSets( ModuleSources sources, Set moduleProjects, Archiver archiver,
+ AssemblerConfigurationSource configSource, boolean includeBaseDirectory )
+ throws ArchiveCreationException, AssemblyFormattingException
+ {
+ if ( sources == null )
+ {
+ return;
+ }
- List includes = binaries.getIncludes();
- List excludes = binaries.getExcludes();
+ for ( Iterator j = moduleProjects.iterator(); j.hasNext(); )
+ {
+ MavenProject moduleProject = ( MavenProject ) j.next();
- FilterUtils.filterArtifacts( binaryDependencies, includes, excludes, true,
- Collections.EMPTY_LIST, getLogger() );
+ sources.setDirectory( PathUtils.toRelative( moduleProject.getBasedir(), sources.getDirectory() ) );
- for ( Iterator binDepIterator = binaryDependencies.iterator(); binDepIterator.hasNext(); )
- {
- Artifact binaryDependency = (Artifact) binDepIterator.next();
-
- String depFileNameMapping = AssemblyFormatUtils.evaluateFileNameMapping( binaries
- .getOutputFileNameMapping(), binaryDependency );
-
- String depOutputLocation = output + depFileNameMapping;
-
- AddArtifactTask depTask = new AddArtifactTask( binaryDependency, depOutputLocation );
-
- depTask.setDirectoryMode( dirMode );
- depTask.setFileMode( fileMode );
- depTask.setUnpack( binaries.isUnpack() );
-
- depTask.execute( archiver, configSource );
- }
- }
- }
+ AddFileSetsTask task = new AddFileSetsTask( Collections.singletonList( sources ) );
- if ( !moduleFileSets.isEmpty() )
- {
- AddFileSetsTask task = new AddFileSetsTask( moduleFileSets );
-
- task.setLogger( getLogger() );
- task.setIncludeBaseDirectory( includeBaseDirectory );
-
- task.execute( archiver, configSource );
- }
- }
+ task.setProject( moduleProject );
+ task.setLogger( getLogger() );
+ task.setIncludeBaseDirectory( includeBaseDirectory );
- allModuleProjects.removeAll( moduleProjects );
+ task.execute( archiver, configSource );
+ }
+ }
- for ( Iterator it = allModuleProjects.iterator(); it.hasNext(); )
- {
- MavenProject excludedProject = (MavenProject) it.next();
+ protected Set getModuleProjects( ModuleSet moduleSet, AssemblerConfigurationSource configSource )
+ throws ArchiveCreationException
+ {
+ MavenProject project = configSource.getProject();
- // would be better to have a way to find out when a specified
- // include or exclude
- // is never triggered and warn() it.
- getLogger().debug( "module: " + excludedProject.getId() + " not included" );
- }
+ Set moduleProjects;
+ try
+ {
+ moduleProjects = ProjectUtils.getProjectModules( project, configSource.getReactorProjects(), getLogger() );
}
+ catch ( IOException e )
+ {
+ throw new ArchiveCreationException( "Error retrieving module-set for project: " + project.getId() + ": "
+ + e.getMessage(), e );
+ }
+
+ FilterUtils.filterProjects( moduleProjects, moduleSet.getIncludes(), moduleSet.getExcludes(), true,
+ getLogger() );
+ return moduleProjects;
}
}
Modified: maven/plugins/branches/MASSEMBLY-124/src/main/java/org/apache/maven/plugin/assembly/archive/phase/RepositoryAssemblyPhase.java
URL: http://svn.apache.org/viewvc/maven/plugins/branches/MASSEMBLY-124/src/main/java/org/apache/maven/plugin/assembly/archive/phase/RepositoryAssemblyPhase.java?rev=427819&r1=427818&r2=427819&view=diff
==============================================================================
--- maven/plugins/branches/MASSEMBLY-124/src/main/java/org/apache/maven/plugin/assembly/archive/phase/RepositoryAssemblyPhase.java (original)
+++ maven/plugins/branches/MASSEMBLY-124/src/main/java/org/apache/maven/plugin/assembly/archive/phase/RepositoryAssemblyPhase.java Tue Aug 1 17:28:06 2006
@@ -1,24 +1,27 @@
package org.apache.maven.plugin.assembly.archive.phase;
-import java.io.File;
-import java.util.Iterator;
-import java.util.List;
-
import org.apache.maven.plugin.assembly.AssemblerConfigurationSource;
import org.apache.maven.plugin.assembly.archive.ArchiveCreationException;
+import org.apache.maven.plugin.assembly.archive.task.AddDirectoryTask;
import org.apache.maven.plugin.assembly.format.AssemblyFormattingException;
import org.apache.maven.plugin.assembly.repository.RepositoryAssembler;
import org.apache.maven.plugin.assembly.repository.RepositoryAssemblyException;
+import org.apache.maven.plugin.assembly.utils.AssemblyFormatUtils;
import org.apache.maven.plugins.assembly.model.Assembly;
import org.apache.maven.plugins.assembly.model.Repository;
import org.codehaus.plexus.archiver.Archiver;
-import org.codehaus.plexus.archiver.ArchiverException;
+import org.codehaus.plexus.logging.AbstractLogEnabled;
+
+import java.io.File;
+import java.util.Iterator;
+import java.util.List;
/**
* @plexus.component role="org.apache.maven.plugin.assembly.archive.phase.AssemblyArchiverPhase"
* role-hint="repositories"
*/
public class RepositoryAssemblyPhase
+ extends AbstractLogEnabled
implements AssemblyArchiverPhase
{
@@ -26,20 +29,30 @@
* @plexus.requirement
*/
private RepositoryAssembler repositoryAssembler;
+
+ public RepositoryAssemblyPhase()
+ {
+ // used for plexus.
+ }
+
+ // introduced for testing.
+ public RepositoryAssemblyPhase( RepositoryAssembler repositoryAssembler )
+ {
+ this.repositoryAssembler = repositoryAssembler;
+ }
public void execute( Assembly assembly, Archiver archiver, AssemblerConfigurationSource configSource )
throws ArchiveCreationException, AssemblyFormattingException
{
- List modulesList = assembly.getRepositories();
+ List repositoriesList = assembly.getRepositories();
- boolean includeBaseDirectory = assembly.isIncludeBaseDirectory();
File tempRoot = configSource.getTemporaryRootDirectory();
- for ( Iterator i = modulesList.iterator(); i.hasNext(); )
+ for ( Iterator i = repositoriesList.iterator(); i.hasNext(); )
{
Repository repository = (Repository) i.next();
- File repositoryDirectory = new File( tempRoot, repository.getOutputDirectory() );
+ File repositoryDirectory = new File( tempRoot, "repositories/" + repository.getOutputDirectory() );
if ( !repositoryDirectory.exists() )
{
@@ -55,21 +68,18 @@
throw new ArchiveCreationException( "Failed to assembly repository: " + e.getMessage(), e );
}
- try
- {
- if ( includeBaseDirectory )
- {
- archiver.addDirectory( repositoryDirectory, repository.getOutputDirectory() + "/" );
- }
- else
- {
- archiver.addDirectory( repositoryDirectory );
- }
- }
- catch ( ArchiverException e )
- {
- throw new ArchiveCreationException( "Error adding directory to archive: " + e.getMessage(), e );
- }
+ String outputDirectory =
+ AssemblyFormatUtils.getOutputDirectory( repository.getOutputDirectory(), configSource.getProject(),
+ configSource.getFinalName(),
+ assembly.isIncludeBaseDirectory() );
+
+ AddDirectoryTask task = new AddDirectoryTask( repositoryDirectory );
+
+ task.setDirectoryMode( Integer.parseInt( repository.getDirectoryMode(), 8 ) );
+ task.setFileMode( Integer.parseInt( repository.getFileMode(), 8 ) );
+ task.setOutputDirectory( outputDirectory );
+
+ task.execute( archiver, configSource );
}
}
Modified: maven/plugins/branches/MASSEMBLY-124/src/main/java/org/apache/maven/plugin/assembly/archive/task/AddArtifactTask.java
URL: http://svn.apache.org/viewvc/maven/plugins/branches/MASSEMBLY-124/src/main/java/org/apache/maven/plugin/assembly/archive/task/AddArtifactTask.java?rev=427819&r1=427818&r2=427819&view=diff
==============================================================================
--- maven/plugins/branches/MASSEMBLY-124/src/main/java/org/apache/maven/plugin/assembly/archive/task/AddArtifactTask.java (original)
+++ maven/plugins/branches/MASSEMBLY-124/src/main/java/org/apache/maven/plugin/assembly/archive/task/AddArtifactTask.java Tue Aug 1 17:28:06 2006
@@ -6,7 +6,10 @@
import org.apache.maven.artifact.Artifact;
import org.apache.maven.plugin.assembly.AssemblerConfigurationSource;
import org.apache.maven.plugin.assembly.archive.ArchiveCreationException;
+import org.apache.maven.plugin.assembly.format.AssemblyFormattingException;
+import org.apache.maven.plugin.assembly.utils.AssemblyFormatUtils;
import org.apache.maven.plugin.assembly.utils.TypeConversionUtils;
+import org.apache.maven.project.MavenProject;
import org.codehaus.plexus.archiver.Archiver;
import org.codehaus.plexus.archiver.ArchiverException;
@@ -24,19 +27,33 @@
private List excludes;
- private final String outputLocation;
-
private final Artifact artifact;
- public AddArtifactTask( Artifact artifact, String outputLocation )
+ private MavenProject project;
+
+ private String outputDirectory;
+
+ private String outputFileNameMapping;
+
+ private boolean includeBaseDirectory;
+
+ public AddArtifactTask( Artifact artifact )
{
this.artifact = artifact;
- this.outputLocation = outputLocation;
}
public void execute( Archiver archiver, AssemblerConfigurationSource configSource )
- throws ArchiveCreationException
+ throws ArchiveCreationException, AssemblyFormattingException
{
+ String destDirectory = outputDirectory;
+
+ destDirectory = AssemblyFormatUtils.getOutputDirectory( destDirectory, project, configSource.getFinalName(),
+ includeBaseDirectory );
+
+ String fileNameMapping = AssemblyFormatUtils.evaluateFileNameMapping( outputFileNameMapping, artifact );
+
+ String outputLocation = destDirectory + fileNameMapping;
+
if ( unpack )
{
String[] includesArray = TypeConversionUtils.toStringArray( includes );
@@ -93,9 +110,9 @@
}
}
- public void setDirectoryMode( int directoryMode )
+ public void setDirectoryMode( String rawDirectoryMode )
{
- this.directoryMode = directoryMode;
+ this.directoryMode = Integer.parseInt( rawDirectoryMode, 8 );
}
public void setExcludes( List excludes )
@@ -103,9 +120,9 @@
this.excludes = excludes;
}
- public void setFileMode( int fileMode )
+ public void setFileMode( String rawFileMode )
{
- this.fileMode = fileMode;
+ this.fileMode = Integer.parseInt( rawFileMode, 8 );
}
public void setIncludes( List includes )
@@ -116,6 +133,26 @@
public void setUnpack( boolean unpack )
{
this.unpack = unpack;
+ }
+
+ public void setProject( MavenProject project )
+ {
+ this.project = project;
+ }
+
+ public void setOutputDirectory( String outputDirectory )
+ {
+ this.outputDirectory = outputDirectory;
+ }
+
+ public void setFileNameMapping( String outputFileNameMapping )
+ {
+ this.outputFileNameMapping = outputFileNameMapping;
+ }
+
+ public void setIncludeBaseDirectory( boolean includeBaseDirectory )
+ {
+ this.includeBaseDirectory = includeBaseDirectory;
}
}
Modified: maven/plugins/branches/MASSEMBLY-124/src/main/java/org/apache/maven/plugin/assembly/archive/task/AddFileSetsTask.java
URL: http://svn.apache.org/viewvc/maven/plugins/branches/MASSEMBLY-124/src/main/java/org/apache/maven/plugin/assembly/archive/task/AddFileSetsTask.java?rev=427819&r1=427818&r2=427819&view=diff
==============================================================================
--- maven/plugins/branches/MASSEMBLY-124/src/main/java/org/apache/maven/plugin/assembly/archive/task/AddFileSetsTask.java (original)
+++ maven/plugins/branches/MASSEMBLY-124/src/main/java/org/apache/maven/plugin/assembly/archive/task/AddFileSetsTask.java Tue Aug 1 17:28:06 2006
@@ -26,6 +26,8 @@
private Logger logger;
+ private MavenProject project;
+
public AddFileSetsTask( List fileSets )
{
this.fileSets = fileSets;
@@ -73,7 +75,11 @@
FileSetFormatter fileSetFormatter = new FileSetFormatter( configSource, logger );
File basedir = configSource.getBasedir();
- MavenProject project = configSource.getProject();
+
+ if ( project == null )
+ {
+ project = configSource.getProject();
+ }
String destDirectory = fileSet.getOutputDirectory();
@@ -168,6 +174,11 @@
public void setIncludeBaseDirectory( boolean includeBaseDirectory )
{
this.includeBaseDirectory = includeBaseDirectory;
+ }
+
+ public void setProject( MavenProject project )
+ {
+ this.project = project;
}
}
Modified: maven/plugins/branches/MASSEMBLY-124/src/main/java/org/apache/maven/plugin/assembly/io/DefaultAssemblyReader.java
URL: http://svn.apache.org/viewvc/maven/plugins/branches/MASSEMBLY-124/src/main/java/org/apache/maven/plugin/assembly/io/DefaultAssemblyReader.java?rev=427819&r1=427818&r2=427819&view=diff
==============================================================================
--- maven/plugins/branches/MASSEMBLY-124/src/main/java/org/apache/maven/plugin/assembly/io/DefaultAssemblyReader.java (original)
+++ maven/plugins/branches/MASSEMBLY-124/src/main/java/org/apache/maven/plugin/assembly/io/DefaultAssemblyReader.java Tue Aug 1 17:28:06 2006
@@ -11,6 +11,7 @@
import org.apache.maven.plugins.assembly.model.DependencySet;
import org.apache.maven.plugins.assembly.model.FileItem;
import org.apache.maven.plugins.assembly.model.FileSet;
+import org.apache.maven.plugins.assembly.model.Repository;
import org.apache.maven.plugins.assembly.model.io.xpp3.AssemblyXpp3Reader;
import org.apache.maven.plugins.assembly.model.io.xpp3.ComponentXpp3Reader;
import org.apache.maven.project.MavenProject;
@@ -251,23 +252,37 @@
{
List dependencySetList = component.getDependencySets();
- for ( int i = 0; i < dependencySetList.size(); ++i )
+ for ( Iterator it = dependencySetList.iterator(); it.hasNext(); )
{
- assembly.addDependencySet( (DependencySet) dependencySetList.get( i ) );
+ DependencySet dependencySet = ( DependencySet ) it.next();
+ assembly.addDependencySet( dependencySet );
}
List fileSetList = component.getFileSets();
- for ( int i = 0; i < fileSetList.size(); ++i )
+ for ( Iterator it = fileSetList.iterator(); it.hasNext(); )
{
- assembly.addFileSet( (FileSet) fileSetList.get( i ) );
+ FileSet fileSet = ( FileSet ) it.next();
+
+ assembly.addFileSet( fileSet );
}
List fileList = component.getFiles();
-
- for ( int i = 0; i < fileList.size(); ++i )
+
+ for ( Iterator it = fileList.iterator(); it.hasNext(); )
+ {
+ FileItem fileItem = ( FileItem ) it.next();
+
+ assembly.addFile( fileItem );
+ }
+
+ List repositoriesList = component.getRepositories();
+
+ for ( Iterator it = repositoriesList.iterator(); it.hasNext(); )
{
- assembly.addFile( (FileItem) fileList.get( i ) );
+ Repository repository = ( Repository ) it.next();
+
+ assembly.addRepository( repository );
}
}
Modified: maven/plugins/branches/MASSEMBLY-124/src/main/java/org/apache/maven/plugin/assembly/mojos/AbstractAssemblyMojo.java
URL: http://svn.apache.org/viewvc/maven/plugins/branches/MASSEMBLY-124/src/main/java/org/apache/maven/plugin/assembly/mojos/AbstractAssemblyMojo.java?rev=427819&r1=427818&r2=427819&view=diff
==============================================================================
--- maven/plugins/branches/MASSEMBLY-124/src/main/java/org/apache/maven/plugin/assembly/mojos/AbstractAssemblyMojo.java (original)
+++ maven/plugins/branches/MASSEMBLY-124/src/main/java/org/apache/maven/plugin/assembly/mojos/AbstractAssemblyMojo.java Tue Aug 1 17:28:06 2006
@@ -48,14 +48,21 @@
{
/**
- * @parameter expression="${localRepository}"
+ * @parameter default-value="${localRepository}"
*/
private ArtifactRepository localRepository;
/**
+ * @parameter default-value="${project.remoteArtifactRepositories}"
+ * @required
+ * @readonly
+ */
+ private List remoteRepositories;
+
+ /**
* Contains the full list of projects in the reactor.
*
- * @parameter expression="${reactorProjects}"
+ * @parameter default-value="${reactorProjects}"
* @required
* @readonly
*/
@@ -64,7 +71,7 @@
/**
* The output directory of the assembled distribution file.
*
- * @parameter expression="${project.build.directory}"
+ * @parameter default-value="${project.build.directory}"
* @required
*/
private File outputDirectory;
@@ -72,7 +79,7 @@
/**
* The filename of the assembled distribution file.
*
- * @parameter expression="${project.build.finalName}"
+ * @parameter default-value="${project.build.finalName}"
* @required
*/
private String finalName;
@@ -80,7 +87,7 @@
/**
* Directory to unpack JARs into if needed
*
- * @parameter expression="${project.build.directory}/assembly/work"
+ * @parameter default-value="${project.build.directory}/assembly/work"
* @required
*/
private File workDirectory;
@@ -153,7 +160,7 @@
/**
* Base directory of the project.
*
- * @parameter expression="${basedir}"
+ * @parameter default-value="${basedir}"
* @required
* @readonly
*/
@@ -169,7 +176,7 @@
/**
* Temporary directory that contain the files to be assembled.
*
- * @parameter expression="${project.build.directory}/archive-tmp"
+ * @parameter default-value="${project.build.directory}/archive-tmp"
* @required
* @readonly
*/
@@ -178,7 +185,7 @@
/**
* Directory for site generated.
*
- * @parameter expression="${project.build.directory}/site"
+ * @parameter default-value="${project.build.directory}/site"
* @readonly
*/
private File siteDirectory;
@@ -207,7 +214,8 @@
private MavenArchiveConfiguration archive;
/**
- * @parameter expression="${project.build.filters}"
+ * @parameter default-value="${project.build.filters}"
+ * @readonly
*/
protected List filters;
@@ -519,6 +527,11 @@
public void setWorkDirectory( File workDirectory )
{
this.workDirectory = workDirectory;
+ }
+
+ public List getRemoteRepositories()
+ {
+ return remoteRepositories;
}
}
Modified: maven/plugins/branches/MASSEMBLY-124/src/main/java/org/apache/maven/plugin/assembly/repository/DefaultRepositoryAssembler.java
URL: http://svn.apache.org/viewvc/maven/plugins/branches/MASSEMBLY-124/src/main/java/org/apache/maven/plugin/assembly/repository/DefaultRepositoryAssembler.java?rev=427819&r1=427818&r2=427819&view=diff
==============================================================================
--- maven/plugins/branches/MASSEMBLY-124/src/main/java/org/apache/maven/plugin/assembly/repository/DefaultRepositoryAssembler.java (original)
+++ maven/plugins/branches/MASSEMBLY-124/src/main/java/org/apache/maven/plugin/assembly/repository/DefaultRepositoryAssembler.java Tue Aug 1 17:28:06 2006
@@ -16,23 +16,6 @@
* limitations under the License.
*/
-import java.io.File;
-import java.io.FileWriter;
-import java.io.IOException;
-import java.io.Writer;
-import java.lang.reflect.Field;
-import java.security.NoSuchAlgorithmException;
-import java.text.DateFormat;
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.TimeZone;
-
import org.apache.maven.artifact.Artifact;
import org.apache.maven.artifact.factory.ArtifactFactory;
import org.apache.maven.artifact.metadata.ArtifactMetadataSource;
@@ -57,7 +40,6 @@
import org.apache.maven.plugin.assembly.utils.DigestUtils;
import org.apache.maven.plugins.assembly.model.GroupVersionAlignment;
import org.apache.maven.plugins.assembly.model.Repository;
-import org.apache.maven.plugins.assembly.model.SetBase;
import org.apache.maven.project.DefaultMavenProjectBuilder;
import org.apache.maven.project.MavenProject;
import org.apache.maven.project.MavenProjectBuilder;
@@ -66,6 +48,23 @@
import org.codehaus.plexus.util.FileUtils;
import org.codehaus.plexus.util.IOUtil;
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.io.Writer;
+import java.lang.reflect.Field;
+import java.security.NoSuchAlgorithmException;
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.TimeZone;
+
/**
* @author Jason van Zyl
*/
@@ -151,11 +150,11 @@
}
}
- private ArtifactFilter buildRepositoryFilter(SetBase repository, MavenProject project)
+ private ArtifactFilter buildRepositoryFilter(Repository repository, MavenProject project)
{
AndArtifactFilter filter = new AndArtifactFilter();
- ArtifactFilter scopeFilter = new ScopeArtifactFilter( Artifact.SCOPE_RUNTIME );
+ ArtifactFilter scopeFilter = new ScopeArtifactFilter( repository.getScope() );
filter.add( scopeFilter );
// ----------------------------------------------------------------------------
Modified: maven/plugins/branches/MASSEMBLY-124/src/main/java/org/apache/maven/plugin/assembly/utils/FilterUtils.java
URL: http://svn.apache.org/viewvc/maven/plugins/branches/MASSEMBLY-124/src/main/java/org/apache/maven/plugin/assembly/utils/FilterUtils.java?rev=427819&r1=427818&r2=427819&view=diff
==============================================================================
--- maven/plugins/branches/MASSEMBLY-124/src/main/java/org/apache/maven/plugin/assembly/utils/FilterUtils.java (original)
+++ maven/plugins/branches/MASSEMBLY-124/src/main/java/org/apache/maven/plugin/assembly/utils/FilterUtils.java Tue Aug 1 17:28:06 2006
@@ -21,17 +21,28 @@
{
}
- public static void filterProjects( Set projects, List includes, List excludes, boolean actTransitively )
+ public static void filterProjects( Set projects, List includes, List excludes, boolean actTransitively,
+ Logger logger )
{
+ List allFilters = new ArrayList();
+
AndArtifactFilter filter = new AndArtifactFilter();
if ( !includes.isEmpty() )
{
- filter.add( new AssemblyIncludesArtifactFilter( includes, actTransitively ) );
+ AssemblyIncludesArtifactFilter includeFilter =
+ new AssemblyIncludesArtifactFilter( includes, actTransitively );
+
+ filter.add( includeFilter );
+ allFilters.add( includeFilter );
}
if ( !excludes.isEmpty() )
{
- filter.add( new AssemblyExcludesArtifactFilter( excludes, actTransitively ) );
+ AssemblyExcludesArtifactFilter excludeFilter =
+ new AssemblyExcludesArtifactFilter( excludes, actTransitively );
+
+ filter.add( excludeFilter );
+ allFilters.add( excludeFilter );
}
for ( Iterator it = projects.iterator(); it.hasNext(); )
@@ -42,6 +53,16 @@
if ( !filter.include( artifact ) )
{
it.remove();
+ }
+ }
+
+ for ( Iterator it = allFilters.iterator(); it.hasNext(); )
+ {
+ ArtifactFilter f = (ArtifactFilter) it.next();
+
+ if ( f instanceof StatisticsReportingFilter )
+ {
+ ((StatisticsReportingFilter) f).reportMissedCriteria( logger );
}
}
}
Modified: maven/plugins/branches/MASSEMBLY-124/src/main/mdo/component.mdo
URL: http://svn.apache.org/viewvc/maven/plugins/branches/MASSEMBLY-124/src/main/mdo/component.mdo?rev=427819&r1=427818&r2=427819&view=diff
==============================================================================
--- maven/plugins/branches/MASSEMBLY-124/src/main/mdo/component.mdo (original)
+++ maven/plugins/branches/MASSEMBLY-124/src/main/mdo/component.mdo Tue Aug 1 17:28:06 2006
@@ -61,6 +61,17 @@
Specify assembly behavior for sets of dependencies.
</description>
</field>
+ <field>
+ <name>repositories</name>
+ <version>1.0.0</version>
+ <association>
+ <type>Repository</type>
+ <multiplicity>*</multiplicity>
+ </association>
+ <description>
+ Specify assembly behavior for sets of repositories.
+ </description>
+ </field>
</fields>
</class>
@@ -297,6 +308,73 @@
</fields>
</class>
+ <class>
+ <name>Repository</name>
+ <version>1.0.0</version>
+ <superClass>SetBase</superClass>
+ <description>Defines a Maven repository to be included in the assembly.</description>
+ <fields>
+ <field>
+ <name>includeMetadata</name>
+ <version>1.0.0</version>
+ <type>boolean</type>
+ <defaultValue>false</defaultValue>
+ <description>
+ If set to true, this property will trigger the creation of repository
+ metadata which will allow the repository to be used as a functional remote
+ repository.
+ </description>
+ </field>
+ <field>
+ <name>groupVersionAlignments</name>
+ <version>1.0.0</version>
+ <description>Align a group to a version or an individual artifact.</description>
+ <association>
+ <type>GroupVersionAlignment</type>
+ <multiplicity>*</multiplicity>
+ </association>
+ </field>
+ <field>
+ <name>scope</name>
+ <version>1.0.0</version>
+ <type>String</type>
+ <defaultValue>runtime</defaultValue>
+ <required>true</required>
+ <description>
+ Specifies the scope for artifacts included in this repository.
+ Default scope value is "runtime".
+ </description>
+ </field>
+ </fields>
+ </class>
+ <class>
+ <name>GroupVersionAlignment</name>
+ <version>1.0.0</version>
+ <description>Defines a Maven repository to be included in the assembly.</description>
+ <fields>
+ <field>
+ <name>id</name>
+ <version>1.0.0</version>
+ <type>String</type>
+ <description>The groupId for which you want to align the versions.</description>
+ </field>
+ <field>
+ <name>version</name>
+ <version>1.0.0</version>
+ <type>String</type>
+ <description>The version you want to align this group to.</description>
+ </field>
+ <field>
+ <name>excludes</name>
+ <version>1.0.0</version>
+ <description>Artifact Ids of the artifacts you want excluded from version alignment.</description>
+ <association>
+ <type>String</type>
+ <multiplicity>*</multiplicity>
+ </association>
+ </field>
+ </fields>
+ </class>
</classes>
</model>
Modified: maven/plugins/branches/MASSEMBLY-124/src/main/mdo/descriptor.mdo
URL: http://svn.apache.org/viewvc/maven/plugins/branches/MASSEMBLY-124/src/main/mdo/descriptor.mdo?rev=427819&r1=427818&r2=427819&view=diff
==============================================================================
--- maven/plugins/branches/MASSEMBLY-124/src/main/mdo/descriptor.mdo (original)
+++ maven/plugins/branches/MASSEMBLY-124/src/main/mdo/descriptor.mdo Tue Aug 1 17:28:06 2006
@@ -528,6 +528,17 @@
<multiplicity>*</multiplicity>
</association>
</field>
+ <field>
+ <name>scope</name>
+ <version>1.0.0</version>
+ <type>String</type>
+ <defaultValue>runtime</defaultValue>
+ <required>true</required>
+ <description>
+ Specifies the scope for artifacts included in this repository.
+ Default scope value is "runtime".
+ </description>
+ </field>
</fields>
</class>
<class>
Modified: maven/plugins/branches/MASSEMBLY-124/src/test/java/org/apache/maven/plugin/assembly/archive/phase/DependencySetAssemblyPhaseTest.java
URL: http://svn.apache.org/viewvc/maven/plugins/branches/MASSEMBLY-124/src/test/java/org/apache/maven/plugin/assembly/archive/phase/DependencySetAssemblyPhaseTest.java?rev=427819&r1=427818&r2=427819&view=diff
==============================================================================
--- maven/plugins/branches/MASSEMBLY-124/src/test/java/org/apache/maven/plugin/assembly/archive/phase/DependencySetAssemblyPhaseTest.java (original)
+++ maven/plugins/branches/MASSEMBLY-124/src/test/java/org/apache/maven/plugin/assembly/archive/phase/DependencySetAssemblyPhaseTest.java Tue Aug 1 17:28:06 2006
@@ -1,7 +1,6 @@
package org.apache.maven.plugin.assembly.archive.phase;
import org.apache.maven.artifact.Artifact;
-import org.apache.maven.artifact.handler.ArtifactHandler;
import org.apache.maven.model.Model;
import org.apache.maven.plugin.assembly.AssemblerConfigurationSource;
import org.apache.maven.plugin.assembly.archive.ArchiveCreationException;
@@ -50,12 +49,11 @@
assembly.addDependencySet( ds );
MockAndControlForAddArtifactTask macTask = new MockAndControlForAddArtifactTask( mockManager );
- MockAndControlForArtifactHandler macHandler = new MockAndControlForArtifactHandler();
macTask.expectArtifactGetFile();
macTask.expectArtifactGetScope( Artifact.SCOPE_COMPILE );
- macTask.expectArtifactGetClassifier( null );
- macTask.expectArtifactGetArtifactHandler( macHandler.handler );
+ macTask.expectGetClassifier( null );
+ macTask.expectGetArtifactHandler();
macTask.expectAddFile( outputLocation + "/artifact", 8 );
@@ -102,7 +100,6 @@
MockAndControlForConfigSource macCS = new MockAndControlForConfigSource();
macCS.enableGetProject( project );
- macCS.enableGetFinalName( "final-name" );
DependencySet ds = new DependencySet();
ds.setOutputDirectory( "/out" );
@@ -145,12 +142,11 @@
ds.setFileMode( Integer.toString( 8, 8 ) );
MockAndControlForAddArtifactTask macTask = new MockAndControlForAddArtifactTask( mockManager );
- MockAndControlForArtifactHandler macHandler = new MockAndControlForArtifactHandler();
macTask.expectArtifactGetFile();
macTask.expectArtifactGetScope( Artifact.SCOPE_COMPILE );
- macTask.expectArtifactGetClassifier( null );
- macTask.expectArtifactGetArtifactHandler( macHandler.handler );
+ macTask.expectGetClassifier( null );
+ macTask.expectGetArtifactHandler();
if ( unpack )
{
@@ -357,21 +353,6 @@
{
logger.info( message );
control.setVoidCallable( MockControl.ONE_OR_MORE );
- }
- }
-
- private final class MockAndControlForArtifactHandler
- {
- ArtifactHandler handler;
-
- MockControl control;
-
- MockAndControlForArtifactHandler()
- {
- control = MockControl.createControl( ArtifactHandler.class );
- mockManager.add( control );
-
- handler = ( ArtifactHandler ) control.getMock();
}
}
Added: maven/plugins/branches/MASSEMBLY-124/src/test/java/org/apache/maven/plugin/assembly/archive/phase/FileItemAssemblyPhaseTest.java
URL: http://svn.apache.org/viewvc/maven/plugins/branches/MASSEMBLY-124/src/test/java/org/apache/maven/plugin/assembly/archive/phase/FileItemAssemblyPhaseTest.java?rev=427819&view=auto
==============================================================================
--- maven/plugins/branches/MASSEMBLY-124/src/test/java/org/apache/maven/plugin/assembly/archive/phase/FileItemAssemblyPhaseTest.java (added)
+++ maven/plugins/branches/MASSEMBLY-124/src/test/java/org/apache/maven/plugin/assembly/archive/phase/FileItemAssemblyPhaseTest.java Tue Aug 1 17:28:06 2006
@@ -0,0 +1,237 @@
+package org.apache.maven.plugin.assembly.archive.phase;
+
+import org.apache.maven.model.Model;
+import org.apache.maven.plugin.assembly.AssemblerConfigurationSource;
+import org.apache.maven.plugin.assembly.archive.ArchiveCreationException;
+import org.apache.maven.plugin.assembly.format.AssemblyFormattingException;
+import org.apache.maven.plugin.assembly.testutils.MockManager;
+import org.apache.maven.plugin.assembly.testutils.TestFileManager;
+import org.apache.maven.plugins.assembly.model.Assembly;
+import org.apache.maven.plugins.assembly.model.FileItem;
+import org.apache.maven.project.MavenProject;
+import org.codehaus.plexus.archiver.Archiver;
+import org.codehaus.plexus.archiver.ArchiverException;
+import org.codehaus.plexus.logging.Logger;
+import org.easymock.MockControl;
+
+import java.io.File;
+import java.io.IOException;
+
+import junit.framework.Assert;
+import junit.framework.TestCase;
+
+public class FileItemAssemblyPhaseTest
+ extends TestCase
+{
+
+ private TestFileManager fileManager = new TestFileManager( "file-item-phase.test.", "" );
+
+ public void tearDown()
+ throws IOException
+ {
+ fileManager.cleanUp();
+ }
+
+ public void testExecute_ShouldAddNothingWhenNoFileItemsArePresent()
+ throws ArchiveCreationException, AssemblyFormattingException
+ {
+ MockManager mm = new MockManager();
+
+ MockAndControlForConfigSource macCS = new MockAndControlForConfigSource( mm );
+
+ File basedir = fileManager.createTempDir();
+
+ macCS.expectGetBasedir( basedir );
+
+ MockAndControlForLogger macLogger = new MockAndControlForLogger( mm );
+
+ Assembly assembly = new Assembly();
+ assembly.setId( "test" );
+
+ mm.replayAll();
+
+ createPhase( macLogger.logger ).execute( assembly, null, macCS.configSource );
+
+ mm.verifyAll();
+ }
+
+ public void testExecute_ShouldAddAbsoluteFileNoFilterNoLineEndingConversion()
+ throws ArchiveCreationException, AssemblyFormattingException, IOException
+ {
+ MockManager mm = new MockManager();
+
+ MockAndControlForConfigSource macCS = new MockAndControlForConfigSource( mm );
+
+ File basedir = fileManager.createTempDir();
+
+ File file = fileManager.createFile( basedir, "file.txt", "This is a test file." );
+
+ macCS.expectGetBasedir( basedir );
+
+ File tempRoot = fileManager.createTempDir();
+
+ macCS.expectGetTemporaryRootDirectory( tempRoot );
+
+ macCS.expectGetProject( new MavenProject( new Model() ) );
+
+ macCS.expectGetFinalName( "final-name" );
+
+ MockAndControlForLogger macLogger = new MockAndControlForLogger( mm );
+
+ MockAndControlForArchiver macArchiver = new MockAndControlForArchiver( mm );
+
+ Assembly assembly = new Assembly();
+ assembly.setId( "test" );
+
+ FileItem fi = new FileItem();
+ fi.setSource( file.getAbsolutePath() );
+ fi.setFiltered( false );
+ fi.setLineEnding( "keep" );
+ fi.setFileMode( "777" );
+
+ macArchiver.expectAddFile( file, "final-name/file.txt", Integer.parseInt( "777", 8 ) );
+
+ assembly.addFile( fi );
+
+ mm.replayAll();
+
+ createPhase( macLogger.logger ).execute( assembly, macArchiver.archiver, macCS.configSource );
+
+ mm.verifyAll();
+ }
+
+ public void testExecute_ShouldAddRelativeFileNoFilterNoLineEndingConversion()
+ throws ArchiveCreationException, AssemblyFormattingException, IOException
+ {
+ MockManager mm = new MockManager();
+
+ MockAndControlForConfigSource macCS = new MockAndControlForConfigSource( mm );
+
+ File basedir = fileManager.createTempDir();
+
+ File file = fileManager.createFile( basedir, "file.txt", "This is a test file." );
+
+ macCS.expectGetBasedir( basedir );
+
+ File tempRoot = fileManager.createTempDir();
+
+ macCS.expectGetTemporaryRootDirectory( tempRoot );
+
+ macCS.expectGetProject( new MavenProject( new Model() ) );
+
+ macCS.expectGetFinalName( "final-name" );
+
+ MockAndControlForLogger macLogger = new MockAndControlForLogger( mm );
+
+ MockAndControlForArchiver macArchiver = new MockAndControlForArchiver( mm );
+
+ Assembly assembly = new Assembly();
+ assembly.setId( "test" );
+
+ FileItem fi = new FileItem();
+ fi.setSource( "file.txt" );
+ fi.setFiltered( false );
+ fi.setLineEnding( "keep" );
+ fi.setFileMode( "777" );
+
+ macArchiver.expectAddFile( file, "final-name/file.txt", Integer.parseInt( "777", 8 ) );
+
+ assembly.addFile( fi );
+
+ mm.replayAll();
+
+ createPhase( macLogger.logger ).execute( assembly, macArchiver.archiver, macCS.configSource );
+
+ mm.verifyAll();
+ }
+
+ private FileItemAssemblyPhase createPhase( Logger logger )
+ {
+ FileItemAssemblyPhase phase = new FileItemAssemblyPhase();
+ phase.enableLogging( logger );
+
+ return phase;
+ }
+
+ private final class MockAndControlForArchiver
+ {
+ Archiver archiver;
+
+ MockControl control;
+
+ public MockAndControlForArchiver( MockManager mockManager )
+ {
+ control = MockControl.createControl( Archiver.class );
+ mockManager.add( control );
+
+ archiver = ( Archiver ) control.getMock();
+ }
+
+ public void expectAddFile( File file, String outputLocation, int fileMode )
+ {
+ try
+ {
+ archiver.addFile( file, outputLocation, fileMode );
+ }
+ catch ( ArchiverException e )
+ {
+ Assert.fail( "Should never happen." );
+ }
+ }
+ }
+
+ private final class MockAndControlForConfigSource
+ {
+ AssemblerConfigurationSource configSource;
+
+ MockControl control;
+
+ public MockAndControlForConfigSource( MockManager mockManager )
+ {
+ control = MockControl.createControl( AssemblerConfigurationSource.class );
+ mockManager.add( control );
+
+ configSource = ( AssemblerConfigurationSource ) control.getMock();
+ }
+
+ public void expectGetProject( MavenProject project )
+ {
+ configSource.getProject();
+ control.setReturnValue( project, MockControl.ONE_OR_MORE );
+ }
+
+ public void expectGetFinalName( String finalName )
+ {
+ configSource.getFinalName();
+ control.setReturnValue( finalName, MockControl.ONE_OR_MORE );
+ }
+
+ public void expectGetTemporaryRootDirectory( File tempRoot )
+ {
+ configSource.getTemporaryRootDirectory();
+ control.setReturnValue( tempRoot, MockControl.ONE_OR_MORE );
+ }
+
+ public void expectGetBasedir( File basedir )
+ {
+ configSource.getBasedir();
+ control.setReturnValue( basedir, MockControl.ONE_OR_MORE );
+ }
+ }
+
+ private final class MockAndControlForLogger
+ {
+ Logger logger;
+
+ MockControl control;
+
+ public MockAndControlForLogger( MockManager mockManager )
+ {
+ control = MockControl.createControl( Logger.class );
+ mockManager.add( control );
+
+ logger = ( Logger ) control.getMock();
+ }
+ }
+
+}
Propchange: maven/plugins/branches/MASSEMBLY-124/src/test/java/org/apache/maven/plugin/assembly/archive/phase/FileItemAssemblyPhaseTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/plugins/branches/MASSEMBLY-124/src/test/java/org/apache/maven/plugin/assembly/archive/phase/FileItemAssemblyPhaseTest.java
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
Modified: maven/plugins/branches/MASSEMBLY-124/src/test/java/org/apache/maven/plugin/assembly/archive/phase/FileSetAssemblyPhaseTest.java
URL: http://svn.apache.org/viewvc/maven/plugins/branches/MASSEMBLY-124/src/test/java/org/apache/maven/plugin/assembly/archive/phase/FileSetAssemblyPhaseTest.java?rev=427819&r1=427818&r2=427819&view=diff
==============================================================================
--- maven/plugins/branches/MASSEMBLY-124/src/test/java/org/apache/maven/plugin/assembly/archive/phase/FileSetAssemblyPhaseTest.java (original)
+++ maven/plugins/branches/MASSEMBLY-124/src/test/java/org/apache/maven/plugin/assembly/archive/phase/FileSetAssemblyPhaseTest.java Tue Aug 1 17:28:06 2006
@@ -13,6 +13,7 @@
import org.easymock.MockControl;
import java.io.File;
+import java.io.IOException;
import junit.framework.TestCase;
@@ -23,6 +24,12 @@
private MockManager mockManager = new MockManager();
private TestFileManager fileManager = new TestFileManager( "file-set-assembly.test.", "" );
+
+ public void tearDown()
+ throws IOException
+ {
+ fileManager.cleanUp();
+ }
public void testShouldNotFailWhenNoFileSetsSpecified()
throws ArchiveCreationException, AssemblyFormattingException
Added: maven/plugins/branches/MASSEMBLY-124/src/test/java/org/apache/maven/plugin/assembly/archive/phase/ModuleSetAssemblyPhaseTest.java
URL: http://svn.apache.org/viewvc/maven/plugins/branches/MASSEMBLY-124/src/test/java/org/apache/maven/plugin/assembly/archive/phase/ModuleSetAssemblyPhaseTest.java?rev=427819&view=auto
==============================================================================
--- maven/plugins/branches/MASSEMBLY-124/src/test/java/org/apache/maven/plugin/assembly/archive/phase/ModuleSetAssemblyPhaseTest.java (added)
+++ maven/plugins/branches/MASSEMBLY-124/src/test/java/org/apache/maven/plugin/assembly/archive/phase/ModuleSetAssemblyPhaseTest.java Tue Aug 1 17:28:06 2006
@@ -0,0 +1,614 @@
+package org.apache.maven.plugin.assembly.archive.phase;
+
+import org.apache.maven.artifact.Artifact;
+import org.apache.maven.artifact.ArtifactUtils;
+import org.apache.maven.model.Model;
+import org.apache.maven.plugin.assembly.AssemblerConfigurationSource;
+import org.apache.maven.plugin.assembly.archive.ArchiveCreationException;
+import org.apache.maven.plugin.assembly.archive.task.testutils.MockAndControlForAddArtifactTask;
+import org.apache.maven.plugin.assembly.archive.task.testutils.MockAndControlForAddFileSetsTask;
+import org.apache.maven.plugin.assembly.format.AssemblyFormattingException;
+import org.apache.maven.plugin.assembly.testutils.MockManager;
+import org.apache.maven.plugin.assembly.testutils.TestFileManager;
+import org.apache.maven.plugins.assembly.model.ModuleBinaries;
+import org.apache.maven.plugins.assembly.model.ModuleSet;
+import org.apache.maven.plugins.assembly.model.ModuleSources;
+import org.apache.maven.project.MavenProject;
+import org.codehaus.plexus.logging.Logger;
+import org.easymock.MockControl;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Set;
+
+import junit.framework.Assert;
+import junit.framework.TestCase;
+
+public class ModuleSetAssemblyPhaseTest
+ extends TestCase
+{
+
+ private TestFileManager fileManager = new TestFileManager( "module-set-phase.test.", "" );
+
+ public void tearDown()
+ throws IOException
+ {
+ fileManager.cleanUp();
+ }
+
+ public void testAddModuleBinaries_ShouldReturnImmediatelyWhenBinariesIsNull()
+ throws ArchiveCreationException, AssemblyFormattingException
+ {
+ createPhase( null ).addModuleBinaries( null, null, null, null, false );
+ }
+
+ public void testAddModuleBinaries_ShouldAddOneModuleArtifactAndNoDeps()
+ throws ArchiveCreationException, AssemblyFormattingException, IOException
+ {
+ MockManager mm = new MockManager();
+
+ MockAndControlForLogger macLogger = new MockAndControlForLogger( mm );
+ MockAndControlForAddArtifactTask macTask = new MockAndControlForAddArtifactTask( mm );
+
+ macTask.expectArtifactGetFile( true );
+ macTask.expectGetFinalName( "final-name" );
+ macTask.expectGetClassifier( null );
+ macTask.expectGetArtifactHandler();
+ macTask.expectAddFile( "out/artifact", Integer.parseInt( "777", 8 ) );
+
+ macTask.artifact.getDependencyConflictId();
+ macTask.artifactCtl.setReturnValue( "group:artifact:jar", MockControl.ONE_OR_MORE );
+
+ ModuleBinaries binaries = new ModuleBinaries();
+
+ binaries.setIncludeDependencies( false );
+ binaries.setUnpack( false );
+ binaries.setFileMode( "777" );
+ binaries.setOutputDirectory( "out" );
+ binaries.setOutputFileNameMapping( "artifact" );
+
+ MavenProject project = createProject( "group", "artifact", "version", null );
+ project.setArtifact( macTask.artifact );
+
+ Set projects = Collections.singleton( project );
+
+ mm.replayAll();
+
+ createPhase( macLogger.logger ).addModuleBinaries( binaries, projects, macTask.archiver, macTask.configSource, false );
+
+ mm.verifyAll();
+ }
+
+ public void testCollectExcludesFromQueuedArtifacts_ShouldAddOneExclusion()
+ {
+ MockManager mm = new MockManager();
+
+ MockAndControlForLogger macLogger = new MockAndControlForLogger( mm );
+
+ List excludes = new ArrayList();
+
+ // nothing up this sleeve...
+ assertTrue( excludes.isEmpty() );
+
+ mm.replayAll();
+
+ Set artifactIds = Collections.singleton( "group:artifact:jar" );
+
+ List result = createPhase( macLogger.logger ).collectExcludesFromQueuedArtifacts( artifactIds, excludes );
+
+ assertEquals( 1, result.size() );
+
+ assertEquals( "group:artifact:jar", result.get( 0 ) );
+
+ mm.verifyAll();
+ }
+
+ public void testCollectExcludesFromQueuedArtifacts_ShouldHandleNullExcludesList()
+ {
+ MockManager mm = new MockManager();
+
+ MockAndControlForLogger macLogger = new MockAndControlForLogger( mm );
+
+ mm.replayAll();
+
+ Set artifactIds = Collections.singleton( "group:artifact:jar" );
+
+ List result = createPhase( macLogger.logger ).collectExcludesFromQueuedArtifacts( artifactIds, null );
+
+ assertEquals( 1, result.size() );
+
+ assertEquals( "group:artifact:jar", result.get( 0 ) );
+
+ mm.verifyAll();
+ }
+
+ public void testAddArtifact_ShouldThrowExceptionWhenArtifactFileIsNull()
+ throws AssemblyFormattingException, IOException
+ {
+ MockManager mm = new MockManager();
+
+ MockAndControlForAddArtifactTask macTask = new MockAndControlForAddArtifactTask( mm );
+ MockAndControlForLogger macLogger = new MockAndControlForLogger( mm );
+
+ macTask.expectArtifactGetFile( false );
+
+ macTask.artifact.getId();
+ macTask.artifactCtl.setReturnValue( "group:artifact:type:version" );
+
+ mm.replayAll();
+
+ try
+ {
+ createPhase( macLogger.logger ).addArtifact( macTask.artifact, null, null, null, null, false );
+
+ fail( "Expected ArchiveCreationException since artifact file is null." );
+ }
+ catch ( ArchiveCreationException e )
+ {
+ // expected
+ }
+
+ mm.verifyAll();
+ }
+
+ public void testAddArtifact_ShouldAddOneArtifact()
+ throws AssemblyFormattingException, IOException, ArchiveCreationException
+ {
+ MockManager mm = new MockManager();
+
+ MockAndControlForAddArtifactTask macTask = new MockAndControlForAddArtifactTask( mm );
+ MockAndControlForLogger macLogger = new MockAndControlForLogger( mm );
+
+ MavenProject project = createProject( "group", "artifact", "version", null );
+ project.setArtifact( macTask.artifact );
+
+ macTask.expectArtifactGetFile();
+ macTask.expectGetFinalName( "final-name" );
+ macTask.expectGetClassifier( null );
+ macTask.expectGetArtifactHandler();
+
+ macTask.expectAddFile( "out/artifact", Integer.parseInt( "777", 8 ) );
+
+ ModuleBinaries binaries = new ModuleBinaries();
+ binaries.setOutputDirectory( "out" );
+ binaries.setOutputFileNameMapping( "artifact" );
+ binaries.setUnpack( false );
+ binaries.setFileMode( "777" );
+
+ mm.replayAll();
+
+ createPhase( macLogger.logger ).addArtifact( macTask.artifact, project, macTask.archiver, macTask.configSource,
+ binaries, false );
+
+ mm.verifyAll();
+ }
+
+ public void testAddModuleSourceFileSets_ShouldReturnImmediatelyIfSourcesIsNull()
+ throws ArchiveCreationException, AssemblyFormattingException
+ {
+ MockManager mm = new MockManager();
+
+ MockAndControlForLogger macLogger = new MockAndControlForLogger( mm );
+
+ mm.replayAll();
+
+ createPhase( macLogger.logger ).addModuleSourceFileSets( null, null, null, null, false );
+
+ mm.verifyAll();
+ }
+
+ public void testAddModuleSourceFileSets_ShouldAddOneSourceDirectory()
+ throws ArchiveCreationException, AssemblyFormattingException
+ {
+ MockManager mm = new MockManager();
+
+ MockAndControlForAddFileSetsTask macTask = new MockAndControlForAddFileSetsTask( mm, fileManager );
+
+ MockAndControlForLogger macLogger = new MockAndControlForLogger( mm );
+ macLogger.expectDebug( true, true );
+
+ MavenProject project = createProject( "group", "artifact", "version", null );
+
+ Set projects = Collections.singleton( project );
+
+ ModuleSources sources = new ModuleSources();
+ sources.setDirectory( "/src" );
+ sources.setDirectoryMode( "777" );
+ sources.setFileMode( "777" );
+
+ macTask.expectGetArchiveBaseDirectory();
+
+ int mode = Integer.parseInt( "777", 8 );
+ int[] modes = { -1, -1, mode, mode };
+
+ macTask.expectAdditionOfSingleFileSet( project, project.getBasedir(), "final-name", false, modes, 1, true,
+ false );
+
+ mm.replayAll();
+
+ createPhase( macLogger.logger ).addModuleSourceFileSets( sources, projects, macTask.archiver,
+ macTask.configSource, false );
+
+ mm.verifyAll();
+ }
+
+ public void testGetModuleProjects_ShouldReturnNothingWhenReactorContainsOnlyCurrentProject()
+ throws ArchiveCreationException
+ {
+ MockManager mm = new MockManager();
+
+ MockAndControlForLogger macLogger = new MockAndControlForLogger( mm );
+ MockAndControlForConfigSource macCS = new MockAndControlForConfigSource( mm );
+
+ MavenProject project = createProject( "group", "artifact", "version", null );
+
+ List projects = Collections.singletonList( project );
+
+ macCS.expectGetProject( project );
+ macCS.expectGetReactorProjects( projects );
+
+ ModuleSet moduleSet = new ModuleSet();
+
+ mm.replayAll();
+
+ Set moduleProjects = createPhase( macLogger.logger ).getModuleProjects( moduleSet, macCS.configSource );
+
+ assertTrue( moduleProjects.isEmpty() );
+
+ mm.verifyAll();
+ }
+
+ public void testGetModuleProjects_ShouldReturnNothingWhenReactorContainsTwoSiblingProjects()
+ throws ArchiveCreationException
+ {
+ MockManager mm = new MockManager();
+
+ MockAndControlForLogger macLogger = new MockAndControlForLogger( mm );
+ MockAndControlForConfigSource macCS = new MockAndControlForConfigSource( mm );
+
+ MavenProject project = createProject( "group", "artifact", "version", null );
+ MavenProject project2 = createProject( "group", "artifact2", "version", null );
+
+ List projects = new ArrayList();
+ projects.add( project );
+ projects.add( project2 );
+
+ macCS.expectGetProject( project );
+ macCS.expectGetReactorProjects( projects );
+
+ ModuleSet moduleSet = new ModuleSet();
+
+ mm.replayAll();
+
+ Set moduleProjects = createPhase( macLogger.logger ).getModuleProjects( moduleSet, macCS.configSource );
+
+ assertTrue( moduleProjects.isEmpty() );
+
+ mm.verifyAll();
+ }
+
+ public void testGetModuleProjects_ShouldReturnModuleOfCurrentProject()
+ throws ArchiveCreationException
+ {
+ MockManager mm = new MockManager();
+
+ MockAndControlForLogger macLogger = new MockAndControlForLogger( mm );
+ MockAndControlForConfigSource macCS = new MockAndControlForConfigSource( mm );
+
+ MavenProject project = createProject( "group", "artifact", "version", null );
+ MavenProject project2 = createProject( "group", "artifact2", "version", project );
+
+ List projects = new ArrayList();
+ projects.add( project );
+ projects.add( project2 );
+
+ macCS.expectGetProject( project );
+ macCS.expectGetReactorProjects( projects );
+
+ ModuleSet moduleSet = new ModuleSet();
+
+ mm.replayAll();
+
+ Set moduleProjects = createPhase( macLogger.logger ).getModuleProjects( moduleSet, macCS.configSource );
+
+ assertFalse( moduleProjects.isEmpty() );
+
+ MavenProject result = ( MavenProject ) moduleProjects.iterator().next();
+
+ assertEquals( "artifact2", result.getArtifactId() );
+
+ mm.verifyAll();
+ }
+
+ public void testGetModuleProjects_ShouldReturnDescendentModulesOfCurrentProject()
+ throws ArchiveCreationException
+ {
+ MockManager mm = new MockManager();
+
+ MockAndControlForLogger macLogger = new MockAndControlForLogger( mm );
+ MockAndControlForConfigSource macCS = new MockAndControlForConfigSource( mm );
+
+ MavenProject project = createProject( "group", "artifact", "version", null );
+ MavenProject project2 = createProject( "group", "artifact2", "version", project );
+ MavenProject project3 = createProject( "group", "artifact3", "version", project2 );
+
+ List projects = new ArrayList();
+ projects.add( project );
+ projects.add( project2 );
+ projects.add( project3 );
+
+ macCS.expectGetProject( project );
+ macCS.expectGetReactorProjects( projects );
+
+ ModuleSet moduleSet = new ModuleSet();
+
+ mm.replayAll();
+
+ Set moduleProjects = createPhase( macLogger.logger ).getModuleProjects( moduleSet, macCS.configSource );
+
+ assertEquals( 2, moduleProjects.size() );
+
+ List check = new ArrayList();
+ check.add( project2 );
+ check.add( project3 );
+
+ verifyResultIs( check, moduleProjects );
+
+ mm.verifyAll();
+ }
+
+ public void testGetModuleProjects_ShouldExcludeModuleAndDescendentsTransitively()
+ throws ArchiveCreationException
+ {
+ MockManager mm = new MockManager();
+
+ MockAndControlForLogger macLogger = new MockAndControlForLogger( mm );
+ MockAndControlForConfigSource macCS = new MockAndControlForConfigSource( mm );
+
+ MavenProject project = createProject( "group", "artifact", "version", null );
+ addArtifact( project, mm, false, false );
+
+ MavenProject project2 = createProject( "group", "artifact2", "version", project );
+ addArtifact( project2, mm, true, false );
+
+ MavenProject project3 = createProject( "group", "artifact3", "version", project2 );
+ addArtifact( project3, mm, true, true );
+
+ List projects = new ArrayList();
+ projects.add( project );
+ projects.add( project2 );
+ projects.add( project3 );
+
+ macCS.expectGetProject( project );
+ macCS.expectGetReactorProjects( projects );
+
+ ModuleSet moduleSet = new ModuleSet();
+
+ moduleSet.addExclude( "group:artifact2" );
+
+ mm.replayAll();
+
+ Set moduleProjects = createPhase( macLogger.logger ).getModuleProjects( moduleSet, macCS.configSource );
+
+ assertTrue( moduleProjects.isEmpty() );
+
+ mm.verifyAll();
+ }
+
+ private void addArtifact( MavenProject project, MockManager mm, boolean expectIdentityChecks,
+ boolean expectDepTrailCheck )
+ {
+ MockAndControlForArtifact macArtifact = new MockAndControlForArtifact( mm );
+
+ if ( expectIdentityChecks )
+ {
+ macArtifact.expectGetArtifactId( project.getArtifactId() );
+ macArtifact.expectGetGroupId( project.getGroupId() );
+ macArtifact.expectGetDependencyConflictId( project.getGroupId(), project.getArtifactId(),
+ project.getPackaging() );
+ }
+
+ if ( expectDepTrailCheck )
+ {
+ LinkedList depTrail = new LinkedList();
+
+ MavenProject parent = project.getParent();
+ while ( parent != null )
+ {
+ depTrail.addLast( ArtifactUtils.versionlessKey( parent.getGroupId(), parent.getArtifactId() ) );
+
+ parent = parent.getParent();
+ }
+
+ macArtifact.expectGetDependencyTrail( depTrail );
+ }
+
+ project.setArtifact( macArtifact.artifact );
+ }
+
+ private void verifyResultIs( List check, Set moduleProjects )
+ {
+ boolean failed = false;
+
+ Set checkTooMany = new HashSet( moduleProjects );
+ checkTooMany.removeAll( check );
+
+ if ( !checkTooMany.isEmpty() )
+ {
+ failed = true;
+
+ System.out.println( "Unexpected projects in output: " );
+
+ for ( Iterator iter = checkTooMany.iterator(); iter.hasNext(); )
+ {
+ MavenProject project = ( MavenProject ) iter.next();
+
+ System.out.println( project.getId() );
+ }
+ }
+
+ Set checkTooFew = new HashSet( check );
+ checkTooFew.removeAll( moduleProjects );
+
+ if ( !checkTooFew.isEmpty() )
+ {
+ failed = true;
+
+ System.out.println( "Expected projects missing from output: " );
+
+ for ( Iterator iter = checkTooMany.iterator(); iter.hasNext(); )
+ {
+ MavenProject project = ( MavenProject ) iter.next();
+
+ System.out.println( project.getId() );
+ }
+ }
+
+ if ( failed )
+ {
+ Assert.fail( "See system output for more information." );
+ }
+ }
+
+ private MavenProject createProject( String groupId, String artifactId, String version, MavenProject parentProject )
+ {
+ Model model = new Model();
+ model.setArtifactId( artifactId );
+ model.setGroupId( groupId );
+ model.setVersion( version );
+
+ MavenProject project = new MavenProject( model );
+
+ File pomFile;
+ if ( parentProject == null )
+ {
+ File basedir = fileManager.createTempDir();
+ pomFile = new File( basedir, "pom.xml" );
+ }
+ else
+ {
+ File parentBase = parentProject.getBasedir();
+ pomFile = new File( parentBase, artifactId + "/pom.xml" );
+
+ parentProject.getModel().addModule( artifactId );
+ project.setParent( parentProject );
+ }
+
+ project.setFile( pomFile );
+
+ return project;
+ }
+
+ private ModuleSetAssemblyPhase createPhase( Logger logger )
+ {
+ ModuleSetAssemblyPhase phase = new ModuleSetAssemblyPhase();
+
+ phase.enableLogging( logger );
+
+ return phase;
+ }
+
+ private final class MockAndControlForArtifact
+ {
+ Artifact artifact;
+
+ MockControl control;
+
+ public MockAndControlForArtifact( MockManager mm )
+ {
+ control = MockControl.createControl( Artifact.class );
+ mm.add( control );
+
+ artifact = ( Artifact ) control.getMock();
+ }
+
+ public void expectGetDependencyTrail( LinkedList depTrail )
+ {
+ artifact.getDependencyTrail();
+ control.setReturnValue( depTrail, MockControl.ONE_OR_MORE );
+ }
+
+ public void expectGetDependencyConflictId( String groupId, String artifactId, String packaging )
+ {
+ artifact.getDependencyConflictId();
+ control.setReturnValue( groupId + ":" + artifactId + ":" + packaging, MockControl.ONE_OR_MORE );
+ }
+
+ void expectGetGroupId( String groupId )
+ {
+ artifact.getGroupId();
+ control.setReturnValue( groupId, MockControl.ONE_OR_MORE );
+ }
+
+ void expectGetArtifactId( String artifactId )
+ {
+ artifact.getArtifactId();
+ control.setReturnValue( artifactId, MockControl.ONE_OR_MORE );
+ }
+ }
+
+ private final class MockAndControlForLogger
+ {
+ Logger logger;
+
+ MockControl control;
+
+ public MockAndControlForLogger( MockManager mockManager )
+ {
+ control = MockControl.createControl( Logger.class );
+ mockManager.add( control );
+
+ logger = ( Logger ) control.getMock();
+ }
+
+ public void expectDebug( boolean debugCheck, boolean debugEnabled )
+ {
+ if ( debugCheck )
+ {
+ logger.isDebugEnabled();
+ control.setReturnValue( debugEnabled, MockControl.ONE_OR_MORE );
+ }
+
+ if ( !debugCheck || debugEnabled )
+ {
+ logger.debug( null );
+ control.setMatcher( MockControl.ALWAYS_MATCHER );
+ control.setVoidCallable( MockControl.ONE_OR_MORE );
+ }
+ }
+ }
+
+ private final class MockAndControlForConfigSource
+ {
+ AssemblerConfigurationSource configSource;
+
+ MockControl control;
+
+ MockAndControlForConfigSource( MockManager mockManager )
+ {
+ control = MockControl.createControl( AssemblerConfigurationSource.class );
+ mockManager.add( control );
+
+ configSource = ( AssemblerConfigurationSource ) control.getMock();
+ }
+
+ public void expectGetReactorProjects( List projects )
+ {
+ configSource.getReactorProjects();
+ control.setReturnValue( projects, MockControl.ONE_OR_MORE );
+ }
+
+ public void expectGetProject( MavenProject project )
+ {
+ configSource.getProject();
+ control.setReturnValue( project, MockControl.ONE_OR_MORE );
+ }
+ }
+
+}
Propchange: maven/plugins/branches/MASSEMBLY-124/src/test/java/org/apache/maven/plugin/assembly/archive/phase/ModuleSetAssemblyPhaseTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/plugins/branches/MASSEMBLY-124/src/test/java/org/apache/maven/plugin/assembly/archive/phase/ModuleSetAssemblyPhaseTest.java
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"