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 2008/09/24 23:14:39 UTC
svn commit: r698739 [2/3] - in
/maven/plugins/trunk/maven-assembly-plugin/src:
it/projects/bugs/massembly-190/ it/projects/bugs/massembly-190/child-1/
it/projects/bugs/massembly-190/child-1/src/
it/projects/bugs/massembly-190/child-1/src/main/ it/proje...
Added: maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/artifact/ResolutionManagementInfo.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/artifact/ResolutionManagementInfo.java?rev=698739&view=auto
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/artifact/ResolutionManagementInfo.java (added)
+++ maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/artifact/ResolutionManagementInfo.java Wed Sep 24 14:14:38 2008
@@ -0,0 +1,100 @@
+package org.apache.maven.plugin.assembly.artifact;
+
+import java.util.LinkedHashSet;
+import java.util.Set;
+
+import org.apache.maven.project.MavenProject;
+import org.apache.maven.shared.artifact.filter.ScopeArtifactFilter;
+
+/**
+ * Helper class used to accumulate scopes and modules (with binaries included)
+ * that are used in an assembly, for the purposes of creating an aggregated
+ * managed-version map with dependency version conflicts resolved.
+ *
+ * @author jdcasey
+ */
+class ResolutionManagementInfo
+{
+ private boolean resolutionRequired;
+
+ private ScopeArtifactFilter scopeFilter = new ScopeArtifactFilter();
+
+ private boolean resolvedTransitively;
+
+ private Set enabledProjects = new LinkedHashSet();
+
+ ResolutionManagementInfo( MavenProject mainProject )
+ {
+ enabledProjects.add( mainProject );
+ }
+
+ boolean isResolutionRequired()
+ {
+ return resolutionRequired;
+ }
+
+ void setResolutionRequired( boolean resolutionRequired )
+ {
+ this.resolutionRequired = resolutionRequired;
+ }
+
+ boolean isResolvedTransitively()
+ {
+ return resolvedTransitively;
+ }
+
+ void setResolvedTransitively( boolean resolvedTransitively )
+ {
+ this.resolvedTransitively = resolvedTransitively;
+ }
+
+ ScopeArtifactFilter getScopeFilter()
+ {
+ return scopeFilter;
+ }
+
+ void enableCompileScope()
+ {
+ scopeFilter.setIncludeCompileScope( true );
+ scopeFilter.setIncludeProvidedScope( true );
+ scopeFilter.setIncludeSystemScope( true );
+ }
+
+ void enableProvidedScope()
+ {
+ scopeFilter.setIncludeProvidedScope( true );
+ }
+
+ void enableRuntimeScope()
+ {
+ scopeFilter.setIncludeRuntimeScope( true );
+ scopeFilter.setIncludeCompileScope( true );
+ }
+
+ void enableTestScope()
+ {
+ scopeFilter.setIncludeTestScope( true );
+ scopeFilter.setIncludeCompileScope( true );
+ scopeFilter.setIncludeProvidedScope( true );
+ scopeFilter.setIncludeSystemScope( true );
+ scopeFilter.setIncludeRuntimeScope( true );
+ }
+
+ void enableSystemScope()
+ {
+ scopeFilter.setIncludeSystemScope( true );
+ }
+
+ void enableProjectResolution( MavenProject project )
+ {
+ if ( !enabledProjects.contains( project ) )
+ {
+ enabledProjects.add( project );
+ }
+ }
+
+ Set getEnabledProjects()
+ {
+ return enabledProjects;
+ }
+}
Propchange: maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/artifact/ResolutionManagementInfo.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/utils/AssemblyFormatUtils.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/utils/AssemblyFormatUtils.java?rev=698739&r1=698738&r2=698739&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/utils/AssemblyFormatUtils.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/utils/AssemblyFormatUtils.java Wed Sep 24 14:14:38 2008
@@ -74,50 +74,57 @@
return distributionName;
}
+ /**
+ * @deprecated Use {@link AssemblyFormatUtils#getOutputDirectory(String, MavenProject, MavenProject, String, AssemblerConfigurationSource)}
+ * instead.
+ */
+ public static String getOutputDirectory( String output, MavenProject mainProject, MavenProject artifactProject,
+ String finalName )
+ throws AssemblyFormattingException
+ {
+ return getOutputDirectory( output, mainProject, null, artifactProject, finalName, null );
+ }
+
public static String getOutputDirectory( String output, MavenProject mainProject, MavenProject artifactProject,
String finalName, AssemblerConfigurationSource configSource )
throws AssemblyFormattingException
{
- return getOutputDirectory( output, mainProject, artifactProject, finalName, "artifact.", configSource );
+ return getOutputDirectory( output, mainProject, null, artifactProject, finalName, configSource );
}
- /*
+ /**
* ORDER OF INTERPOLATION PRECEDENCE:
- *
- * 1. Support for special expressions, like ${finalName} (use the assembly plugin configuration not the build config)
- * 2. prefixed with artifactProjectRefName ("module." or "artifact.", normally).
- * A. MavenProject instance for artifact
- * 3. prefixed with "artifact.", if artifactProjectRefName != "artifact."
- * A. MavenProject instance for artifact
- * 4. user-defined properties from the command line
- * 5. prefixed with "pom." or "project.", or no prefix at all
- * A. MavenProject instance from current build
- * 6. properties from main project
- * 7. system properties, from the MavenSession instance (to support IDEs)
- * 8. environment variables.
- *
+ * <ol>
+ * <li> Support for special expressions, like ${finalName} (use the assembly plugin configuration not the build config)</li>
+ * <li> prefixed with "module." if moduleProject is non-null
+ * <ol><li>MavenProject instance for module being assembled</li></ol>
+ * </li>
+ * <li>prefixed with "artifact." if artifactProject is non-null
+ * <ol><li>MavenProject instance for artifact</li></ol>
+ * </li>
+ * <li>user-defined properties from the command line</li>
+ * <li>prefixed with "pom." or "project.", or no prefix at all
+ * <ol><li>MavenProject instance from current build</li></ol>
+ * </li>
+ * <li>properties from main project</li>
+ * <li>system properties, from the MavenSession instance (to support IDEs)</li>
+ * <li>environment variables.</li>
+ * </ol>
*/
- public static String getOutputDirectory( String output, MavenProject mainProject, MavenProject artifactProject,
- String finalName, String artifactProjectRefName,
+ public static String getOutputDirectory( String output,
+ MavenProject mainProject,
+ MavenProject moduleProject,
+ MavenProject artifactProject,
+ String finalName,
AssemblerConfigurationSource configSource )
throws AssemblyFormattingException
{
- if ( artifactProjectRefName == null )
- {
- artifactProjectRefName = "artifact.";
- }
-
String value = output;
if ( value == null )
{
value = "";
}
- if ( ( artifactProjectRefName != null ) && !artifactProjectRefName.endsWith( "." ) )
- {
- artifactProjectRefName += ".";
- }
-
StringSearchInterpolator interpolator = new StringSearchInterpolator();
Properties specialExpressionOverrides = new Properties();
@@ -130,37 +137,42 @@
// 1
interpolator.addValueSource( new PropertiesBasedValueSource( specialExpressionOverrides ) );
-
- if ( artifactProject != null )
+
+ if ( moduleProject != null )
{
// 2
- interpolator.addValueSource( new PrefixedObjectValueSource( artifactProjectRefName, artifactProject ) );
-
- if ( !"artifact.".equals( artifactProjectRefName ) )
- {
- // 3
- interpolator.addValueSource( new PrefixedObjectValueSource( "artifact.", artifactProject ) );
- }
+ interpolator.addValueSource( new PrefixedObjectValueSource( "module.", moduleProject ) );
}
- MavenSession session = configSource.getMavenSession();
+ if ( artifactProject != null )
+ {
+ // 3
+ interpolator.addValueSource( new PrefixedObjectValueSource( "artifact.", artifactProject ) );
+ }
- if ( session != null )
+ MavenSession session = null;
+
+ if ( configSource != null )
{
- Properties userProperties = null;
- try
- {
- userProperties = session.getExecutionProperties();
- }
- catch ( NoSuchMethodError nsmer )
- {
- // OK, so user is using Maven <= 2.0.8. No big deal.
- }
-
- if ( userProperties != null )
+ session = configSource.getMavenSession();
+
+ if ( session != null )
{
- // 4
- interpolator.addValueSource( new PropertiesBasedValueSource( userProperties ) );
+ Properties userProperties = null;
+ try
+ {
+ userProperties = session.getExecutionProperties();
+ }
+ catch ( NoSuchMethodError nsmer )
+ {
+ // OK, so user is using Maven <= 2.0.8. No big deal.
+ }
+
+ if ( userProperties != null )
+ {
+ // 4
+ interpolator.addValueSource( new PropertiesBasedValueSource( userProperties ) );
+ }
}
}
@@ -225,89 +237,97 @@
return value;
}
+ /**
+ * @deprecated Use {@link AssemblyFormatUtils#evaluateFileNameMapping(String, Artifact, MavenProject, MavenProject, AssemblerConfigurationSource)}
+ * instead.
+ */
+ public static String evaluateFileNameMapping( String expression, Artifact artifact, MavenProject mainProject,
+ MavenProject artifactProject )
+ throws AssemblyFormattingException
+ {
+ return evaluateFileNameMapping( expression, artifact, mainProject, null, null, artifactProject, null );
+ }
+
public static String evaluateFileNameMapping( String expression, Artifact artifact, MavenProject mainProject,
MavenProject artifactProject,
AssemblerConfigurationSource configSource )
throws AssemblyFormattingException
{
- return evaluateFileNameMapping( expression, artifact, mainProject, artifactProject, "artifact.", configSource );
+ return evaluateFileNameMapping( expression, artifact, mainProject, null, null, artifactProject, configSource );
}
- /*
+ /**
* ORDER OF INTERPOLATION PRECEDENCE:
- *
- * 1. prefixed with artifactProjectRefName, from parameters list above.
- * A. Artifact instance
- * B. ArtifactHandler instance for artifact
- * C. MavenProject instance for artifact
- * 2. prefixed with "artifact.", if artifactProjectRefName != "artifact."
- * A. Artifact instance
- * B. ArtifactHandler instance for artifact
- * C. MavenProject instance for artifact
- * 3. prefixed with "pom." or "project."
- * A. MavenProject instance from current build
- * 4. no prefix, using main project instance
- * A. MavenProject instance from current build
- * 5. Support for special expressions, like ${dashClassifier?}
- * 6. user-defined properties from the command line
- * 7. properties from main project
- * 8. system properties, from the MavenSession instance (to support IDEs)
- * 9. environment variables.
- *
+ * <ol>
+ * <li>prefixed with "module.", if moduleProject != null
+ * <ol>
+ * <li>Artifact instance for module, if moduleArtifact != null</li>
+ * <li>ArtifactHandler instance for module, if moduleArtifact != null</li>
+ * <li>MavenProject instance for module</li>
+ * </ol>
+ * </li>
+ * <li>prefixed with "artifact."
+ * <ol>
+ * <li>Artifact instance</li>
+ * <li>ArtifactHandler instance for artifact</li>
+ * <li>MavenProject instance for artifact</li>
+ * </ol>
+ * </li>
+ * <li>prefixed with "pom." or "project."
+ * <ol><li>MavenProject instance from current build</li></ol>
+ * </li>
+ * <li>no prefix, using main project instance
+ * <ol><li>MavenProject instance from current build</li></ol>
+ * </li>
+ * <li>Support for special expressions, like ${dashClassifier?}</li>
+ * <li>user-defined properties from the command line</li>
+ * <li>properties from main project</li>
+ * <li>system properties, from the MavenSession instance (to support IDEs)</li>
+ * <li>environment variables.</li>
+ * </ol>
*/
public static String evaluateFileNameMapping( String expression, Artifact artifact, MavenProject mainProject,
- MavenProject artifactProject, String artifactProjectRefName,
+ MavenProject moduleProject,
+ Artifact moduleArtifact,
+ MavenProject artifactProject,
AssemblerConfigurationSource configSource )
throws AssemblyFormattingException
{
String value = expression;
- if ( artifactProjectRefName == null )
- {
- artifactProjectRefName = "artifact.";
- }
-
- if ( !artifactProjectRefName.endsWith( "." ) )
- {
- artifactProjectRefName += ".";
- }
-
// TODO: This is BAD! Accessors SHOULD NOT change the behavior of the object.
// [jdcasey; 16-Aug-1007] This is fixed in SVN, just waiting for it to pass out of legacy.
artifact.isSnapshot();
StringSearchInterpolator interpolator = new StringSearchInterpolator();
- // 1A
- interpolator.addValueSource( new PrefixedObjectValueSource( artifactProjectRefName, artifact ) );
-
- // 1B
- interpolator.addValueSource( new PrefixedObjectValueSource( artifactProjectRefName, artifact.getArtifactHandler() ) );
- interpolator.addValueSource( new PrefixedObjectValueSource( artifactProjectRefName
- + ( artifactProjectRefName.endsWith( "." )
- ? "" : "." ) + "handler.",
- artifact.getArtifactHandler() ) );
-
+ if ( moduleArtifact != null )
+ {
+ // 1A
+ interpolator.addValueSource( new PrefixedObjectValueSource( "module.", moduleArtifact ) );
+
+ // 1B
+ interpolator.addValueSource( new PrefixedObjectValueSource( "module.", moduleArtifact.getArtifactHandler() ) );
+ interpolator.addValueSource( new PrefixedObjectValueSource( "module.handler.", moduleArtifact.getArtifactHandler() ) );
+ }
+
// 1C
- if ( artifactProject != null )
+ if ( moduleProject != null )
{
- interpolator.addValueSource( new PrefixedObjectValueSource( artifactProjectRefName, artifactProject ) );
+ interpolator.addValueSource( new PrefixedObjectValueSource( "module.", moduleProject ) );
}
- if ( !"artifact.".equals( artifactProjectRefName ) )
- {
- // 2A
- interpolator.addValueSource( new PrefixedObjectValueSource( "artifact.", artifact ) );
+ // 2A
+ interpolator.addValueSource( new PrefixedObjectValueSource( "artifact.", artifact ) );
- // 2B
- interpolator.addValueSource( new PrefixedObjectValueSource( "artifact.", artifact.getArtifactHandler() ) );
- interpolator.addValueSource( new PrefixedObjectValueSource( "artifact.handler.", artifact.getArtifactHandler() ) );
+ // 2B
+ interpolator.addValueSource( new PrefixedObjectValueSource( "artifact.", artifact.getArtifactHandler() ) );
+ interpolator.addValueSource( new PrefixedObjectValueSource( "artifact.handler.", artifact.getArtifactHandler() ) );
- // 2C
- if ( artifactProject != null )
- {
- interpolator.addValueSource( new PrefixedObjectValueSource( "artifact.", artifactProject ) );
- }
+ // 2C
+ if ( artifactProject != null )
+ {
+ interpolator.addValueSource( new PrefixedObjectValueSource( "artifact.", artifactProject ) );
}
if ( mainProject != null )
@@ -334,24 +354,28 @@
// 5
interpolator.addValueSource( new PropertiesBasedValueSource( specialRules ) );
- MavenSession session = configSource.getMavenSession();
-
- if ( session != null )
+ MavenSession session = null;
+ if ( configSource != null )
{
- Properties userProperties = null;
- try
- {
- userProperties = session.getExecutionProperties();
- }
- catch ( NoSuchMethodError nsmer )
- {
- // OK, so user is using Maven <= 2.0.8. No big deal.
- }
-
- if ( userProperties != null )
+ session = configSource.getMavenSession();
+
+ if ( session != null )
{
- // 6
- interpolator.addValueSource( new PropertiesBasedValueSource( userProperties ) );
+ Properties userProperties = null;
+ try
+ {
+ userProperties = session.getExecutionProperties();
+ }
+ catch ( NoSuchMethodError nsmer )
+ {
+ // OK, so user is using Maven <= 2.0.8. No big deal.
+ }
+
+ if ( userProperties != null )
+ {
+ // 6
+ interpolator.addValueSource( new PropertiesBasedValueSource( userProperties ) );
+ }
}
}
Modified: maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/utils/ProjectUtils.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/utils/ProjectUtils.java?rev=698739&r1=698738&r2=698739&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/utils/ProjectUtils.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/utils/ProjectUtils.java Wed Sep 24 14:14:38 2008
@@ -27,6 +27,7 @@
import java.util.Collections;
import java.util.HashSet;
import java.util.Iterator;
+import java.util.LinkedHashSet;
import java.util.List;
import java.util.Set;
@@ -46,9 +47,9 @@
{
Set singleParentSet = Collections.singleton( project );
- Set moduleCandidates = new HashSet( reactorProjects );
+ Set moduleCandidates = new LinkedHashSet( reactorProjects );
- Set modules = new HashSet();
+ Set modules = new LinkedHashSet();
// we temporarily add the master project to the modules set, since this
// set is pulling double duty as a set of
Modified: maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/DefaultAssemblyArchiverTest.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/DefaultAssemblyArchiverTest.java?rev=698739&r1=698738&r2=698739&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/DefaultAssemblyArchiverTest.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/DefaultAssemblyArchiverTest.java Wed Sep 24 14:14:38 2008
@@ -19,15 +19,19 @@
* under the License.
*/
+import org.apache.maven.artifact.resolver.ArtifactResolutionException;
+import org.apache.maven.artifact.versioning.InvalidVersionSpecificationException;
import org.apache.maven.model.Model;
import org.apache.maven.plugin.assembly.AssemblerConfigurationSource;
import org.apache.maven.plugin.assembly.InvalidAssemblerConfigurationException;
import org.apache.maven.plugin.assembly.archive.phase.AssemblyArchiverPhase;
+import org.apache.maven.plugin.assembly.artifact.DependencyResolver;
import org.apache.maven.plugin.assembly.format.AssemblyFormattingException;
import org.apache.maven.plugin.assembly.model.Assembly;
import org.apache.maven.plugin.assembly.testutils.MockManager;
import org.apache.maven.plugin.assembly.testutils.TestFileManager;
import org.apache.maven.project.MavenProject;
+import org.apache.maven.project.artifact.InvalidDependencyVersionException;
import org.codehaus.plexus.PlexusTestCase;
import org.codehaus.plexus.archiver.ArchiveFinalizer;
import org.codehaus.plexus.archiver.ArchivedFileSet;
@@ -61,7 +65,6 @@
import java.util.Set;
import junit.framework.Assert;
-import junit.framework.TestCase;
public class DefaultAssemblyArchiverTest
extends PlexusTestCase
@@ -92,7 +95,7 @@
AssemblyArchiverPhase phase = (AssemblyArchiverPhase) phaseControl.getMock();
- phase.execute( null, null, null );
+ phase.execute( null, null, null, null );
phaseControl.setMatcher( MockControl.ALWAYS_MATCHER );
MockControl csControl = MockControl.createControl( AssemblerConfigurationSource.class );
@@ -526,7 +529,7 @@
private DefaultAssemblyArchiver createSubject( MockAndControlForAssemblyArchiver macMgr, List phases, Logger logger )
{
DefaultAssemblyArchiver subject =
- new DefaultAssemblyArchiver( macMgr.archiverManager, macMgr.collectionManager, phases );
+ new DefaultAssemblyArchiver( macMgr.archiverManager, macMgr.collectionManager, macMgr.resolver, phases );
subject.setContainer( getContainer() );
@@ -553,6 +556,10 @@
MockControl collectionManagerControl;
ActiveCollectionManager collectionManager;
+
+ MockControl resolverControl;
+
+ DependencyResolver resolver;
private final MockManager mm;
@@ -568,6 +575,31 @@
mm.add( collectionManagerControl );
collectionManager = (ActiveCollectionManager) collectionManagerControl.getMock();
+
+ resolverControl = MockControl.createControl( DependencyResolver.class );
+ mm.add( resolverControl );
+
+ resolver = (DependencyResolver) resolverControl.getMock();
+
+ try
+ {
+ resolver.buildManagedVersionMap( null, null );
+ }
+ catch ( ArtifactResolutionException e )
+ {
+ }
+ catch ( ArchiveCreationException e )
+ {
+ }
+ catch ( InvalidVersionSpecificationException e )
+ {
+ }
+ catch ( InvalidDependencyVersionException e )
+ {
+ }
+
+ resolverControl.setMatcher( MockControl.ALWAYS_MATCHER );
+ resolverControl.setReturnValue( Collections.EMPTY_MAP, MockControl.ZERO_OR_MORE );
}
void expectGetDestFile( File file )
Modified: maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/phase/ModuleSetAssemblyPhaseTest.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/phase/ModuleSetAssemblyPhaseTest.java?rev=698739&r1=698738&r2=698739&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/phase/ModuleSetAssemblyPhaseTest.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/phase/ModuleSetAssemblyPhaseTest.java Wed Sep 24 14:14:38 2008
@@ -20,6 +20,7 @@
*/
import org.apache.maven.model.Model;
+import org.apache.maven.plugin.assembly.DefaultAssemblyContext;
import org.apache.maven.plugin.assembly.InvalidAssemblerConfigurationException;
import org.apache.maven.plugin.assembly.archive.ArchiveCreationException;
import org.apache.maven.plugin.assembly.archive.task.testutils.ArtifactMock;
@@ -61,6 +62,8 @@
{
private TestFileManager fileManager = new TestFileManager( "module-set-phase.test.", "" );
+
+ private Logger logger = new ConsoleLogger( Logger.LEVEL_INFO, "test" );
public void tearDown()
throws IOException
@@ -140,7 +143,7 @@
File basedir = fileManager.createTempDir();
MavenProject artifactProject = new MavenProject( new Model() );
-
+
artifactProject.setFile( new File( basedir, "pom.xml" ) );
ArtifactMock artifactMock = new ArtifactMock( mm, "group", "artifact", "version", "jar", false );
@@ -309,7 +312,7 @@
public void testAddModuleBinaries_ShouldReturnImmediatelyWhenBinariesIsNull()
throws ArchiveCreationException, AssemblyFormattingException, InvalidAssemblerConfigurationException
{
- createPhase( null, null ).addModuleBinaries( null, null, null, null );
+ createPhase( null, null ).addModuleBinaries( null, null, null, null, null );
}
public void testAddModuleBinaries_ShouldFilterPomModule()
@@ -339,7 +342,8 @@
createPhase( new ConsoleLogger( Logger.LEVEL_DEBUG, "test" ), null ).addModuleBinaries( binaries, projects,
macTask.archiver,
- macTask.configSource );
+ macTask.configSource,
+ new DefaultAssemblyContext() );
mm.verifyAll();
}
@@ -377,7 +381,8 @@
Logger logger = new ConsoleLogger( Logger.LEVEL_DEBUG, "test" );
- createPhase( logger, null ).addModuleBinaries( binaries, projects, macTask.archiver, macTask.configSource );
+ createPhase( logger, null ).addModuleBinaries( binaries, projects, macTask.archiver, macTask.configSource,
+ new DefaultAssemblyContext() );
mm.verifyAll();
}
@@ -411,7 +416,8 @@
try
{
- createPhase( logger, null ).addModuleBinaries( binaries, projects, macTask.archiver, macTask.configSource );
+ createPhase( logger, null ).addModuleBinaries( binaries, projects, macTask.archiver, macTask.configSource,
+ new DefaultAssemblyContext() );
fail( "Should throw an invalid configuration exception because of module with missing attachment." );
}
@@ -455,7 +461,8 @@
Logger logger = new ConsoleLogger( Logger.LEVEL_DEBUG, "test" );
- createPhase( logger, null ).addModuleBinaries( binaries, projects, macTask.archiver, macTask.configSource );
+ createPhase( logger, null ).addModuleBinaries( binaries, projects, macTask.archiver, macTask.configSource,
+ new DefaultAssemblyContext() );
mm.verifyAll();
}
@@ -515,7 +522,8 @@
ModuleSetAssemblyPhase phase = createPhase( overrideLogger, macTask );
- phase.addModuleBinaries( binaries, projects, macTask.archiver, macTask.configSource );
+ phase.addModuleBinaries( binaries, projects, macTask.archiver, macTask.configSource,
+ new DefaultAssemblyContext() );
mm.verifyAll();
}
@@ -571,7 +579,8 @@
ModuleSetAssemblyPhase phase = createPhase( overrideLogger, macTask );
- phase.addModuleBinaries( binaries, projects, macTask.archiver, macTask.configSource );
+ phase.addModuleBinaries( binaries, projects, macTask.archiver, macTask.configSource,
+ new DefaultAssemblyContext() );
mm.verifyAll();
}
@@ -746,11 +755,11 @@
macTask.expectGetReactorProjects( projects );
ModuleSet moduleSet = new ModuleSet();
+ moduleSet.setIncludeSubModules( true );
mm.replayAll();
- Set moduleProjects = createPhase( new ConsoleLogger( Logger.LEVEL_DEBUG, "test" ), macTask )
- .getModuleProjects( moduleSet, macTask.configSource, true );
+ Set moduleProjects = ModuleSetAssemblyPhase.getModuleProjects( moduleSet, macTask.configSource, logger );
assertTrue( moduleProjects.isEmpty() );
@@ -775,11 +784,11 @@
macTask.expectGetReactorProjects( projects );
ModuleSet moduleSet = new ModuleSet();
+ moduleSet.setIncludeSubModules( true );
mm.replayAll();
- Set moduleProjects = createPhase( new ConsoleLogger( Logger.LEVEL_DEBUG, "test" ), macTask )
- .getModuleProjects( moduleSet, macTask.configSource, true );
+ Set moduleProjects = ModuleSetAssemblyPhase.getModuleProjects( moduleSet, macTask.configSource, logger );
assertTrue( moduleProjects.isEmpty() );
@@ -804,11 +813,11 @@
macTask.expectGetReactorProjects( projects );
ModuleSet moduleSet = new ModuleSet();
+ moduleSet.setIncludeSubModules( true );
mm.replayAll();
- Set moduleProjects = createPhase( new ConsoleLogger( Logger.LEVEL_DEBUG, "test" ), macTask )
- .getModuleProjects( moduleSet, macTask.configSource, true );
+ Set moduleProjects = ModuleSetAssemblyPhase.getModuleProjects( moduleSet, macTask.configSource, logger );
assertFalse( moduleProjects.isEmpty() );
@@ -839,11 +848,11 @@
macTask.expectGetReactorProjects( projects );
ModuleSet moduleSet = new ModuleSet();
+ moduleSet.setIncludeSubModules( true );
mm.replayAll();
- Set moduleProjects = createPhase( new ConsoleLogger( Logger.LEVEL_DEBUG, "test" ), macTask )
- .getModuleProjects( moduleSet, macTask.configSource, true );
+ Set moduleProjects = ModuleSetAssemblyPhase.getModuleProjects( moduleSet, macTask.configSource, logger );
assertEquals( 2, moduleProjects.size() );
@@ -889,13 +898,13 @@
macTask.expectGetReactorProjects( projects );
ModuleSet moduleSet = new ModuleSet();
+ moduleSet.setIncludeSubModules( true );
moduleSet.addExclude( "group:artifact2" );
mm.replayAll();
- Set moduleProjects = createPhase( new ConsoleLogger( Logger.LEVEL_DEBUG, "test" ), macTask )
- .getModuleProjects( moduleSet, macTask.configSource, true );
+ Set moduleProjects = ModuleSetAssemblyPhase.getModuleProjects( moduleSet, macTask.configSource, logger );
assertTrue( moduleProjects.isEmpty() );
Modified: maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/phase/RepositoryAssemblyPhaseTest.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/phase/RepositoryAssemblyPhaseTest.java?rev=698739&r1=698738&r2=698739&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/phase/RepositoryAssemblyPhaseTest.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/phase/RepositoryAssemblyPhaseTest.java Wed Sep 24 14:14:38 2008
@@ -24,6 +24,8 @@
import org.apache.maven.artifact.resolver.ArtifactResolutionException;
import org.apache.maven.model.Model;
import org.apache.maven.plugin.assembly.AssemblerConfigurationSource;
+import org.apache.maven.plugin.assembly.DefaultAssemblyContext;
+import org.apache.maven.plugin.assembly.InvalidAssemblerConfigurationException;
import org.apache.maven.plugin.assembly.archive.ArchiveCreationException;
import org.apache.maven.plugin.assembly.archive.phase.wrappers.RepoBuilderConfigSourceWrapper;
import org.apache.maven.plugin.assembly.archive.phase.wrappers.RepoInfoWrapper;
@@ -67,7 +69,7 @@
}
public void testExecute_ShouldNotIncludeRepositoryIfNonSpecifiedInAssembly()
- throws ArchiveCreationException, AssemblyFormattingException
+ throws ArchiveCreationException, AssemblyFormattingException, InvalidAssemblerConfigurationException
{
MockManager mm = new MockManager();
@@ -88,13 +90,14 @@
createPhase( macRepo.repositoryAssembler, macResolver.dependencyResolver,
new ConsoleLogger( Logger.LEVEL_DEBUG, "test" ) ).execute( assembly, macArchiver.archiver,
- macCS.configSource );
+ macCS.configSource,
+ new DefaultAssemblyContext() );
mm.verifyAll();
}
public void testExecute_ShouldIncludeOneRepository()
- throws ArchiveCreationException, AssemblyFormattingException
+ throws ArchiveCreationException, AssemblyFormattingException, InvalidAssemblerConfigurationException
{
MockManager mm = new MockManager();
@@ -138,7 +141,8 @@
createPhase( macRepo.repositoryAssembler, macResolver.dependencyResolver,
new ConsoleLogger( Logger.LEVEL_DEBUG, "test" ) ).execute( assembly, macArchiver.archiver,
- macCS.configSource );
+ macCS.configSource,
+ new DefaultAssemblyContext() );
mm.verifyAll();
}
@@ -299,7 +303,7 @@
{
try
{
- dependencyResolver.resolveDependencies( null, null, null, null, true );
+ dependencyResolver.resolveDependencies( null, null, null, null, null, true );
dependencyResolverCtl.setMatcher( MockControl.ALWAYS_MATCHER );
dependencyResolverCtl.setReturnValue( resolvedArtifacts );
}
@@ -349,19 +353,4 @@
}
}
- private final class MockAndControlForLogger
- {
- Logger logger;
-
- MockControl control;
-
- public MockAndControlForLogger( MockManager mockManager )
- {
- control = MockControl.createControl( Logger.class );
- mockManager.add( control );
-
- logger = (Logger) control.getMock();
- }
- }
-
}
Modified: maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/task/AddDependencySetsTaskTest.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/task/AddDependencySetsTaskTest.java?rev=698739&r1=698738&r2=698739&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/task/AddDependencySetsTaskTest.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/task/AddDependencySetsTaskTest.java Wed Sep 24 14:14:38 2008
@@ -113,7 +113,7 @@
Logger logger = new ConsoleLogger( Logger.LEVEL_DEBUG, "test" );
AddDependencySetsTask task = new AddDependencySetsTask( Collections.singletonList( ds ),
- depProject, macTask.projectBuilder,
+ depProject, Collections.EMPTY_MAP, macTask.projectBuilder,
macTask.dependencyResolver, logger );
task.addDependencySet( ds, macTask.archiver, macTask.configSource );
@@ -141,7 +141,7 @@
Logger logger = new ConsoleLogger( Logger.LEVEL_DEBUG, "test" );
AddDependencySetsTask task = new AddDependencySetsTask( Collections.singletonList( ds ),
- project, macTask.projectBuilder,
+ project, Collections.EMPTY_MAP, macTask.projectBuilder,
macTask.dependencyResolver, logger );
task.addDependencySet( ds, null, macTask.configSource );
@@ -193,7 +193,7 @@
Logger logger = new ConsoleLogger( Logger.LEVEL_DEBUG, "test" );
AddDependencySetsTask task = new AddDependencySetsTask( Collections.singletonList( ds ),
- project, macTask.projectBuilder,
+ project, Collections.EMPTY_MAP, macTask.projectBuilder,
macTask.dependencyResolver, logger );
task.addDependencySet( ds, macTask.archiver, macTask.configSource );
@@ -266,7 +266,7 @@
Logger logger = new ConsoleLogger( Logger.LEVEL_DEBUG, "test" );
AddDependencySetsTask task = new AddDependencySetsTask( Collections.singletonList( ds ),
- project, macTask.projectBuilder,
+ project, Collections.EMPTY_MAP, macTask.projectBuilder,
macTask.dependencyResolver, logger );
mockManager.replayAll();
@@ -300,7 +300,7 @@
AddDependencySetsTask task = new AddDependencySetsTask(
Collections.singletonList( dependencySet ),
- project, macTask.projectBuilder,
+ project, Collections.EMPTY_MAP, macTask.projectBuilder,
macTask.dependencyResolver, logger );
Set result = task.resolveDependencyArtifacts( dependencySet, macTask.configSource );
@@ -355,7 +355,7 @@
AddDependencySetsTask task = new AddDependencySetsTask(
Collections.singletonList( dependencySet ),
- project, null,
+ project, Collections.EMPTY_MAP, null,
macTask.dependencyResolver, logger );
Set result = task.resolveDependencyArtifacts( dependencySet, macTask.configSource );
@@ -409,7 +409,7 @@
AddDependencySetsTask task = new AddDependencySetsTask(
Collections.singletonList( dependencySet ),
- project, null,
+ project, Collections.EMPTY_MAP, null,
macTask.dependencyResolver, logger );
Set result = task.resolveDependencyArtifacts( dependencySet, macTask.configSource );
Modified: maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/task/testutils/MockAndControlForAddDependencySetsTask.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/task/testutils/MockAndControlForAddDependencySetsTask.java?rev=698739&r1=698738&r2=698739&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/task/testutils/MockAndControlForAddDependencySetsTask.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/task/testutils/MockAndControlForAddDependencySetsTask.java Wed Sep 24 14:14:38 2008
@@ -224,7 +224,7 @@
{
try
{
- dependencyResolver.resolveDependencies( null, null, null, null, true );
+ dependencyResolver.resolveDependencies( null, null, null, null, null, true );
}
catch ( ArtifactResolutionException e )
{
Added: maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/artifact/DefaultDependencyResolverTest.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/artifact/DefaultDependencyResolverTest.java?rev=698739&view=auto
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/artifact/DefaultDependencyResolverTest.java (added)
+++ maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/artifact/DefaultDependencyResolverTest.java Wed Sep 24 14:14:38 2008
@@ -0,0 +1,631 @@
+package org.apache.maven.plugin.assembly.artifact;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import org.apache.maven.artifact.Artifact;
+import org.apache.maven.artifact.factory.ArtifactFactory;
+import org.apache.maven.artifact.metadata.ArtifactMetadataRetrievalException;
+import org.apache.maven.artifact.metadata.ArtifactMetadataSource;
+import org.apache.maven.artifact.metadata.ResolutionGroup;
+import org.apache.maven.artifact.repository.ArtifactRepository;
+import org.apache.maven.artifact.repository.ArtifactRepositoryFactory;
+import org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout;
+import org.apache.maven.artifact.resolver.ArtifactCollector;
+import org.apache.maven.artifact.resolver.ArtifactResolutionException;
+import org.apache.maven.artifact.versioning.InvalidVersionSpecificationException;
+import org.apache.maven.model.Dependency;
+import org.apache.maven.model.DependencyManagement;
+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.model.Assembly;
+import org.apache.maven.plugin.assembly.model.DependencySet;
+import org.apache.maven.plugin.assembly.model.ModuleBinaries;
+import org.apache.maven.plugin.assembly.model.ModuleSet;
+import org.apache.maven.plugin.assembly.model.Repository;
+import org.apache.maven.plugin.assembly.testutils.MockManager;
+import org.apache.maven.project.MavenProject;
+import org.apache.maven.project.artifact.InvalidDependencyVersionException;
+import org.codehaus.plexus.PlexusTestCase;
+import org.codehaus.plexus.logging.Logger;
+import org.codehaus.plexus.logging.console.ConsoleLogger;
+import org.easymock.ArgumentsMatcher;
+import org.easymock.MockControl;
+
+public class DefaultDependencyResolverTest
+ extends PlexusTestCase
+{
+
+ private ArtifactFactory factory;
+
+ private ArtifactRepositoryFactory repoFactory;
+
+ private ArtifactRepositoryLayout layout;
+
+ private ArtifactCollector collector;
+
+ public void setUp()
+ throws Exception
+ {
+ super.setUp();
+
+ factory = (ArtifactFactory) lookup( ArtifactFactory.ROLE );
+ repoFactory = (ArtifactRepositoryFactory) lookup( ArtifactRepositoryFactory.ROLE );
+ layout = (ArtifactRepositoryLayout) lookup( ArtifactRepositoryLayout.ROLE, "default" );
+
+ collector = (ArtifactCollector) lookup( ArtifactCollector.class.getName() );
+ }
+
+ public void test_getDependencySetResolutionRequirements()
+ {
+ List depSets = new ArrayList();
+
+ DependencySet ds1 = new DependencySet();
+ ds1.setScope( Artifact.SCOPE_COMPILE );
+ ds1.setUseTransitiveDependencies( false );
+
+ depSets.add( ds1 );
+
+ DependencySet ds2 = new DependencySet();
+ ds2.setScope( Artifact.SCOPE_SYSTEM );
+ ds2.setUseTransitiveDependencies( false );
+
+ depSets.add( ds2 );
+
+ ResolutionManagementInfo info = new ResolutionManagementInfo( new MavenProject( new Model() ) );
+
+ new DefaultDependencyResolver().getDependencySetResolutionRequirements( depSets, info );
+
+ assertTrue( info.isResolutionRequired() );
+ assertFalse( info.isResolvedTransitively() );
+
+ assertTrue( info.getScopeFilter().isIncludeCompileScope() );
+ assertTrue( info.getScopeFilter().isIncludeSystemScope() );
+
+ assertTrue( info.getScopeFilter().isIncludeProvidedScope() );
+
+ assertFalse( info.getScopeFilter().isIncludeRuntimeScope() );
+ assertFalse( info.getScopeFilter().isIncludeTestScope() );
+ }
+
+ public void test_getModuleSetResolutionRequirements()
+ throws ArchiveCreationException
+ {
+ MockManager mm = new MockManager();
+
+ MockControl csControl = MockControl.createControl( AssemblerConfigurationSource.class );
+ mm.add( csControl );
+
+ AssemblerConfigurationSource cs = (AssemblerConfigurationSource) csControl.getMock();
+
+ File rootDir = new File( "root" );
+ MavenProject project = createMavenProject( "main-group", "main-artifact", "1", rootDir );
+
+ File module1Dir = new File( rootDir, "module-1" );
+ MavenProject module1 = createMavenProject( "main-group", "module-1", "1", module1Dir );
+ MavenProject module1a = createMavenProject( "group1", "module-1a", "1", new File( module1Dir, "module-1a" ) );
+ MavenProject module1b = createMavenProject( "group1.b", "module-1b", "1", new File( module1Dir, "module-1b" ) );
+
+ module1.getModel().addModule( module1a.getArtifactId() );
+ module1.getModel().addModule( module1b.getArtifactId() );
+
+ File module2Dir = new File( rootDir, "module-2" );
+ MavenProject module2 = createMavenProject( "main-group", "module-2", "1", module2Dir );
+ MavenProject module2a = createMavenProject( "main-group", "module-2a", "1", new File( module2Dir, "module-2a" ) );
+
+ module2.getModel().addModule( module2a.getArtifactId() );
+
+ project.getModel().addModule( module1.getArtifactId() );
+ project.getModel().addModule( module2.getArtifactId() );
+
+ List allProjects = new ArrayList();
+ allProjects.add( project );
+ allProjects.add( module1 );
+ allProjects.add( module1a );
+ allProjects.add( module1b );
+ allProjects.add( module2 );
+ allProjects.add( module2a );
+
+ cs.getReactorProjects();
+ csControl.setReturnValue( allProjects, MockControl.ZERO_OR_MORE );
+
+ cs.getProject();
+ csControl.setReturnValue( project, MockControl.ZERO_OR_MORE );
+
+ ResolutionManagementInfo info = new ResolutionManagementInfo( project );
+
+ List moduleSets = new ArrayList();
+
+ {
+ ModuleSet ms = new ModuleSet();
+ ms.addInclude( "*module1*" );
+ ms.setIncludeSubModules( false );
+
+ ModuleBinaries mb = new ModuleBinaries();
+
+ DependencySet ds = new DependencySet();
+ ds.setScope( Artifact.SCOPE_COMPILE );
+
+ mb.addDependencySet( ds );
+ ms.setBinaries( mb );
+ moduleSets.add( ms );
+ }
+
+ {
+ ModuleSet ms = new ModuleSet();
+ ms.addInclude( "main-group:*" );
+ ms.setIncludeSubModules( true );
+
+ ModuleBinaries mb = new ModuleBinaries();
+
+ DependencySet ds = new DependencySet();
+ ds.setScope( Artifact.SCOPE_TEST );
+
+ mb.addDependencySet( ds );
+ ms.setBinaries( mb );
+ moduleSets.add( ms );
+ }
+
+ mm.replayAll();
+
+ DefaultDependencyResolver resolver = new DefaultDependencyResolver();
+ resolver.enableLogging( new ConsoleLogger( Logger.LEVEL_DEBUG, "test" ) );
+
+ resolver.getModuleSetResolutionRequirements( moduleSets, info, cs );
+
+ assertTrue( info.isResolutionRequired() );
+
+ Set enabledProjects = info.getEnabledProjects();
+ assertTrue( enabledProjects.contains( project ) );
+
+ assertTrue( enabledProjects.contains( module1 ) );
+
+ // these should be excluded since sub-modules are not traversable
+ assertFalse( enabledProjects.contains( module1a ) );
+ assertFalse( enabledProjects.contains( module1b ) );
+
+ assertTrue( enabledProjects.contains( module2 ) );
+ assertTrue( enabledProjects.contains( module2a ) );
+
+ // these are the two we directly set above.
+ assertTrue( info.getScopeFilter().isIncludeTestScope() );
+ assertTrue( info.getScopeFilter().isIncludeCompileScope() );
+
+ // this combination should be implied by the two direct scopes set above.
+ assertTrue( info.getScopeFilter().isIncludeRuntimeScope() );
+ assertTrue( info.getScopeFilter().isIncludeProvidedScope() );
+ assertTrue( info.getScopeFilter().isIncludeSystemScope() );
+
+ mm.verifyAll();
+ }
+
+ public void test_getRepositoryResolutionRequirements()
+ {
+ List repositories = new ArrayList();
+
+ {
+ Repository r = new Repository();
+ r.setScope( Artifact.SCOPE_COMPILE );
+ repositories.add( r );
+ }
+
+ {
+ Repository r = new Repository();
+ r.setScope( Artifact.SCOPE_SYSTEM );
+ repositories.add( r );
+ }
+
+ ResolutionManagementInfo info = new ResolutionManagementInfo( new MavenProject( new Model() ) );
+
+ new DefaultDependencyResolver().getRepositoryResolutionRequirements( repositories, info );
+
+ assertTrue( info.isResolutionRequired() );
+
+ assertTrue( info.getScopeFilter().isIncludeCompileScope() );
+ assertTrue( info.getScopeFilter().isIncludeSystemScope() );
+
+ assertTrue( info.getScopeFilter().isIncludeProvidedScope() );
+
+ assertFalse( info.getScopeFilter().isIncludeRuntimeScope() );
+ assertFalse( info.getScopeFilter().isIncludeTestScope() );
+ }
+
+ public void test_getManagedVersionMap()
+ throws InvalidVersionSpecificationException
+ {
+ MavenProject project = createMavenProject( "group", "artifact", "1", new File( "base" ) );
+
+ DependencyManagement dm = new DependencyManagement();
+ project.getModel().setDependencyManagement( dm );
+
+ Dependency d1 = new Dependency();
+ d1.setGroupId( "group" );
+ d1.setArtifactId( "dep1" );
+ d1.setVersion( "2" );
+ d1.setScope( Artifact.SCOPE_PROVIDED );
+
+ dm.addDependency( d1 );
+
+ Dependency d2 = new Dependency();
+ d2.setGroupId( "group" );
+ d2.setArtifactId( "dep2" );
+ d2.setVersion( "2.1" );
+
+ dm.addDependency( d2 );
+
+ DefaultDependencyResolver resolver = new DefaultDependencyResolver();
+ resolver.setLogger( new ConsoleLogger( Logger.LEVEL_DEBUG, "test" ) );
+ resolver.setArtifactFactory( factory );
+
+ Map managedVersionMap = resolver.getManagedVersionMap( project );
+
+ Artifact a1 = (Artifact) managedVersionMap.get( d1.getManagementKey() );
+ assertNotNull( a1 );
+ assertEquals( d1.getVersion(), a1.getVersion() );
+ assertEquals( d1.getScope(), a1.getScope() );
+
+ Artifact a2 = (Artifact) managedVersionMap.get( d2.getManagementKey() );
+ assertNotNull( a2 );
+ assertEquals( d2.getVersion(), a2.getVersion() );
+ assertNull( a2.getScope() );
+ }
+
+ public void test_aggregateRemoteArtifactRepositories()
+ {
+ List externalRepos = new ArrayList();
+
+ ArtifactRepository er1 = repoFactory.createArtifactRepository( "test.1", "http://test.com/path", layout, null, null );
+ externalRepos.add( er1 );
+
+ ArtifactRepository er2 = repoFactory.createArtifactRepository( "test.2", "http://test2.com/path", layout, null, null );
+ externalRepos.add( er2 );
+
+ List projectRepos = new ArrayList();
+
+ ArtifactRepository pr1 = repoFactory.createArtifactRepository( "project.1", "http://test.com/project", layout, null, null );
+ projectRepos.add( pr1 );
+
+ ArtifactRepository pr2 = repoFactory.createArtifactRepository( "project.2", "http://test2.com/path", layout, null, null );
+ projectRepos.add( pr2 );
+
+ MavenProject project = createMavenProject( "group", "artifact", "1", new File( "base" ) );
+ project.setRemoteArtifactRepositories( projectRepos );
+
+ List aggregated = new DefaultDependencyResolver().aggregateRemoteArtifactRepositories( externalRepos, project );
+
+ assertRepositoryWithId( er1.getId(), aggregated, true );
+ assertRepositoryWithId( er2.getId(), aggregated, true );
+ assertRepositoryWithId( pr1.getId(), aggregated, true );
+ assertRepositoryWithId( pr2.getId(), aggregated, false );
+ }
+
+ public void test_manageArtifact()
+ {
+ Artifact managed = factory.createArtifact( "group", "artifact", "1", Artifact.SCOPE_PROVIDED, "jar" );
+
+ Artifact target =
+ factory.createArtifact( managed.getGroupId(), managed.getArtifactId(), "2", Artifact.SCOPE_COMPILE,
+ managed.getType() );
+
+ Artifact target2 =
+ factory.createArtifact( "other-group", managed.getArtifactId(), "2", Artifact.SCOPE_COMPILE,
+ managed.getType() );
+
+ Map managedVersions = Collections.singletonMap( managed.getDependencyConflictId(), managed );
+
+ DefaultDependencyResolver resolver =
+ new DefaultDependencyResolver().setLogger( new ConsoleLogger( Logger.LEVEL_DEBUG, "test" ) );
+
+ resolver.manageArtifact( target, managedVersions );
+ resolver.manageArtifact( target2, managedVersions );
+
+ assertEquals( managed.getVersion(), target.getVersion() );
+ assertEquals( managed.getScope(), target.getScope() );
+
+ assertEquals( "2", target2.getVersion() );
+ assertEquals( Artifact.SCOPE_COMPILE, target2.getScope() );
+ }
+
+ public void test_buildManagedVersionMap_NonTransitiveResolution()
+ throws ArtifactResolutionException, ArchiveCreationException, InvalidVersionSpecificationException,
+ InvalidDependencyVersionException
+ {
+ Assembly assembly = new Assembly();
+
+ DependencySet ds = new DependencySet();
+ ds.setScope( Artifact.SCOPE_PROVIDED );
+ ds.setUseTransitiveDependencies( false );
+
+ assembly.addDependencySet( ds );
+
+ ModuleSet ms = new ModuleSet();
+ ModuleBinaries mb = new ModuleBinaries();
+ ms.setBinaries( mb );
+
+ DependencySet mds = new DependencySet();
+ mds.setScope( Artifact.SCOPE_PROVIDED );
+ mds.setUseTransitiveDependencies( false );
+
+ mb.addDependencySet( mds );
+
+ assembly.addModuleSet( ms );
+
+ MavenProject project = createMavenProject( "group", "artifact", "1", new File( "base" ) );
+
+ Dependency d1 = new Dependency();
+ d1.setGroupId( "group.dep" );
+ d1.setArtifactId( "dep1" );
+ d1.setVersion( "1" );
+ d1.setScope( Artifact.SCOPE_COMPILE );
+
+ project.getModel().addDependency( d1 );
+
+ Dependency d2 = new Dependency();
+ d2.setGroupId( "group.dep" );
+ d2.setArtifactId( "dep2" );
+ d2.setVersion( "1" );
+ d2.setScope( Artifact.SCOPE_PROVIDED );
+
+ project.getModel().addDependency( d2 );
+
+ Dependency d3 = new Dependency();
+ d3.setGroupId( "group.dep" );
+ d3.setArtifactId( "dep3" );
+ d3.setVersion( "1" );
+ d3.setScope( Artifact.SCOPE_PROVIDED );
+
+ project.getModel().addDependency( d3 );
+
+ MavenProject module = createMavenProject( "group", "module", "1", new File( "base/module" ) );
+
+ project.getModel().addModule( module.getArtifactId() );
+
+ Dependency md = new Dependency();
+ md.setGroupId( "group.dep" );
+ md.setArtifactId( "dep3" );
+ md.setVersion( "2" );
+ md.setScope( Artifact.SCOPE_PROVIDED );
+
+ module.getModel().addDependency( md );
+
+ List allProjects = new ArrayList();
+ allProjects.add( project );
+ allProjects.add( module );
+
+ MockManager mm = new MockManager();
+
+ MockControl csControl = MockControl.createControl( AssemblerConfigurationSource.class );
+ mm.add( csControl );
+
+ AssemblerConfigurationSource cs = (AssemblerConfigurationSource) csControl.getMock();
+
+ cs.getProject();
+ csControl.setReturnValue( project, MockControl.ZERO_OR_MORE );
+
+ cs.getReactorProjects();
+ csControl.setReturnValue( allProjects, MockControl.ZERO_OR_MORE );
+
+ cs.getRemoteRepositories();
+ csControl.setReturnValue( Collections.EMPTY_LIST, MockControl.ZERO_OR_MORE );
+
+ mm.replayAll();
+
+ DefaultDependencyResolver resolver = new DefaultDependencyResolver();
+ resolver.setArtifactFactory( factory );
+ resolver.setLogger( new ConsoleLogger( Logger.LEVEL_DEBUG, "test" ) );
+
+ Map managedVersionMap = resolver.buildManagedVersionMap( assembly, cs );
+
+ {
+ Dependency d = d1;
+ Artifact a = (Artifact) managedVersionMap.get( d.getManagementKey() );
+ assertNull( a );
+ }
+
+ {
+ Dependency d = d2;
+ Artifact a = (Artifact) managedVersionMap.get( d.getManagementKey() );
+ assertNotNull( a );
+ assertEquals( d.getVersion(), a.getVersion() );
+ assertEquals( d.getScope(), a.getScope() );
+ }
+
+ {
+ Dependency d = d3;
+ Artifact a = (Artifact) managedVersionMap.get( d.getManagementKey() );
+ assertNotNull( a );
+ assertEquals( d.getVersion(), a.getVersion() );
+ assertEquals( d.getScope(), a.getScope() );
+ }
+
+ mm.verifyAll();
+ }
+
+ public void test_buildManagedVersionMap_TransitiveResolution()
+ throws ArtifactResolutionException, ArchiveCreationException, InvalidVersionSpecificationException,
+ InvalidDependencyVersionException
+ {
+ Assembly assembly = new Assembly();
+
+ DependencySet ds = new DependencySet();
+ ds.setScope( Artifact.SCOPE_COMPILE );
+ ds.setUseTransitiveDependencies( true );
+
+ assembly.addDependencySet( ds );
+
+ MavenProject project = createMavenProject( "group", "artifact", "1", new File( "base" ) );
+
+ Dependency d1 = new Dependency();
+ d1.setGroupId( "group.dep" );
+ d1.setArtifactId( "dep1" );
+ d1.setVersion( "1" );
+ d1.setScope( Artifact.SCOPE_COMPILE );
+
+ project.getModel().addDependency( d1 );
+
+ Dependency d2 = new Dependency();
+ d2.setGroupId( "group.dep" );
+ d2.setArtifactId( "dep2" );
+ d2.setVersion( "1" );
+ d2.setScope( Artifact.SCOPE_COMPILE );
+ final Artifact a2 = factory.createArtifact( d2.getGroupId(), d2.getArtifactId(), d2.getVersion(), d2.getScope(), "jar" );
+
+ project.getModel().addDependency( d2 );
+
+ Dependency d3 = new Dependency();
+ d3.setGroupId( "group.dep" );
+ d3.setArtifactId( "dep3" );
+ d3.setVersion( "1" );
+ d3.setScope( Artifact.SCOPE_COMPILE );
+
+ project.getModel().addDependency( d3 );
+
+ final Artifact a2a = factory.createArtifact( d3.getGroupId(), d3.getArtifactId(), "2", Artifact.SCOPE_RUNTIME, "jar" );
+
+ MockManager mm = new MockManager();
+
+ MockControl msControl = MockControl.createControl( ArtifactMetadataSource.class );
+ mm.add( msControl );
+
+ ArtifactMetadataSource ms = (ArtifactMetadataSource) msControl.getMock();
+
+ try
+ {
+ ms.retrieve( null, null, null );
+ }
+ catch ( ArtifactMetadataRetrievalException e )
+ {
+ }
+
+ msControl.setDefaultReturnValue( new ResolutionGroup( null, Collections.EMPTY_SET, Collections.EMPTY_LIST ) );
+ msControl.setMatcher( new ArgumentsMatcher()
+ {
+ public boolean matches( Object[] expected, Object[] actual )
+ {
+ Artifact a = (Artifact) actual[0];
+
+ return a2.getArtifactId().equals( a.getArtifactId() );
+ }
+
+ public String toString( Object[] args )
+ {
+ return "with artifact: " + args[0] ;
+ }
+
+ } );
+ msControl.setReturnValue( new ResolutionGroup( a2, Collections.singleton( a2a ), Collections.EMPTY_LIST ) );
+
+
+ MockControl csControl = MockControl.createControl( AssemblerConfigurationSource.class );
+ mm.add( csControl );
+
+ AssemblerConfigurationSource cs = (AssemblerConfigurationSource) csControl.getMock();
+
+ cs.getProject();
+ csControl.setReturnValue( project, MockControl.ZERO_OR_MORE );
+
+ String tmpDir = System.getProperty( "java.io.tmpdir" );
+ ArtifactRepository lr = repoFactory.createArtifactRepository( "local", "file://" + tmpDir, layout, null, null );
+
+ cs.getLocalRepository();
+ csControl.setReturnValue( lr, MockControl.ZERO_OR_MORE );
+
+ cs.getRemoteRepositories();
+ csControl.setReturnValue( Collections.EMPTY_LIST, MockControl.ZERO_OR_MORE );
+
+ mm.replayAll();
+
+ DefaultDependencyResolver resolver = new DefaultDependencyResolver();
+ resolver.setArtifactMetadataSource( ms );
+ resolver.setArtifactCollector( collector );
+ resolver.setArtifactFactory( factory );
+ resolver.setLogger( new ConsoleLogger( Logger.LEVEL_DEBUG, "test" ) );
+
+ Map managedVersionMap = resolver.buildManagedVersionMap( assembly, cs );
+
+ {
+ Dependency d = d1;
+ Artifact a = (Artifact) managedVersionMap.get( d.getManagementKey() );
+ assertNotNull( a );
+ assertEquals( d.getVersion(), a.getVersion() );
+ assertEquals( d.getScope(), a.getScope() );
+ }
+
+ {
+ Dependency d = d2;
+ Artifact a = (Artifact) managedVersionMap.get( d.getManagementKey() );
+ assertNotNull( a );
+ assertEquals( d.getVersion(), a.getVersion() );
+ assertEquals( d.getScope(), a.getScope() );
+ }
+
+ {
+ Dependency d = d3;
+ Artifact a = (Artifact) managedVersionMap.get( d.getManagementKey() );
+ assertNotNull( a );
+ assertEquals( d.getVersion(), a.getVersion() );
+ assertEquals( d.getScope(), a.getScope() );
+ }
+
+ mm.verifyAll();
+ }
+
+ private void assertRepositoryWithId( String repoId, List repos, boolean shouldExist )
+ {
+ if ( ( repos == null || repos.isEmpty() ) )
+ {
+ if ( shouldExist )
+ {
+ fail( "Repository with id: " + repoId + " should be present, but repository list is null or empty." );
+ }
+ }
+ else
+ {
+ boolean found = false;
+ for ( Iterator it = repos.iterator(); it.hasNext(); )
+ {
+ ArtifactRepository repo = (ArtifactRepository) it.next();
+ if ( repoId.equals( repo.getId() ) )
+ {
+ found = true;
+ break;
+ }
+ }
+
+ if ( shouldExist )
+ {
+ assertTrue( "Repository with id: " + repoId + " should be present in repository list.", found );
+ }
+ else
+ {
+ assertFalse( "Repository with id: " + repoId + " should NOT be present in repository list.", found );
+ }
+ }
+ }
+
+ private MavenProject createMavenProject( String groupId, String artifactId, String version, File basedir )
+ {
+ Model model = new Model();
+
+ model.setGroupId( groupId );
+ model.setArtifactId( artifactId );
+ model.setVersion( version );
+ model.setPackaging( "pom" );
+
+ MavenProject project = new MavenProject( model );
+
+ Artifact pomArtifact = factory.createProjectArtifact( groupId, artifactId, version );
+ project.setArtifact( pomArtifact );
+
+ project.setFile( new File( basedir, "pom.xml" ) );
+
+ return project;
+ }
+
+}
Propchange: maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/artifact/DefaultDependencyResolverTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/testutils/MockManager.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/testutils/MockManager.java?rev=698739&r1=698738&r2=698739&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/testutils/MockManager.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/testutils/MockManager.java Wed Sep 24 14:14:38 2008
@@ -19,16 +19,16 @@
* under the License.
*/
-import java.util.ArrayList;
+import java.util.HashSet;
import java.util.Iterator;
-import java.util.List;
+import java.util.Set;
import org.easymock.MockControl;
public class MockManager
{
- private List mockControls = new ArrayList();
+ private Set mockControls = new HashSet();
public void add( MockControl control )
{