You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by kr...@apache.org on 2014/11/03 19:28:09 UTC
svn commit: r1636414 - in /maven/plugins/trunk/maven-assembly-plugin/src:
it/projects/dependency-sets/massembly-619/
main/java/org/apache/maven/plugin/assembly/archive/phase/
main/java/org/apache/maven/plugin/assembly/artifact/
test/java/org/apache/mav...
Author: krosenvold
Date: Mon Nov 3 18:28:08 2014
New Revision: 1636414
URL: http://svn.apache.org/r1636414
Log:
[MASSEMBLY-619] Fixed bleed between resolution phases for multiple dependency sets
Added:
maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/massembly-619/
maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/massembly-619/assembly.xml
maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/massembly-619/invoker.properties
maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/massembly-619/pom.xml
maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/massembly-619/verify.bsh
Modified:
maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/phase/DependencySetAssemblyPhase.java
maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/phase/ModuleSetAssemblyPhase.java
maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/artifact/DefaultDependencyResolver.java
maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/artifact/DependencyResolver.java
maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/phase/DependencySetAssemblyPhaseTest.java
maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/phase/ModuleSetAssemblyPhaseTest.java
maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/task/testutils/MockAndControlForAddArtifactTask.java
maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/task/testutils/MockAndControlForAddDependencySetsTask.java
Added: maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/massembly-619/assembly.xml
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/massembly-619/assembly.xml?rev=1636414&view=auto
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/massembly-619/assembly.xml (added)
+++ maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/massembly-619/assembly.xml Mon Nov 3 18:28:08 2014
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements. See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership. The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied. See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+<assembly
+ xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd">
+
+ <id>deploy-zip</id>
+ <formats>
+ <format>zip</format>
+ </formats>
+
+ <dependencySets>
+ <dependencySet>
+ <outputDirectory>dir1</outputDirectory>
+ <includes>
+ <include>commons-configuration:commons-configuration</include>
+ </includes>
+ </dependencySet>
+ <dependencySet>
+ <outputDirectory>dir2</outputDirectory>
+ <useTransitiveDependencies>false</useTransitiveDependencies>
+ <excludes>
+ <exclude>commons-configuration:commons-configuration</exclude>
+ </excludes>
+ </dependencySet>
+ </dependencySets>
+
+</assembly>
Added: maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/massembly-619/invoker.properties
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/massembly-619/invoker.properties?rev=1636414&view=auto
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/massembly-619/invoker.properties (added)
+++ maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/massembly-619/invoker.properties Mon Nov 3 18:28:08 2014
@@ -0,0 +1,18 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+invoker.goals=install
Added: maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/massembly-619/pom.xml
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/massembly-619/pom.xml?rev=1636414&view=auto
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/massembly-619/pom.xml (added)
+++ maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/massembly-619/pom.xml Mon Nov 3 18:28:08 2014
@@ -0,0 +1,64 @@
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements. See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership. The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied. See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <name>bug-test</name>
+ <groupId>com.example.assembly</groupId>
+ <artifactId>bug-test</artifactId>
+ <version>1.0-SNAPSHOT</version>
+
+ <dependencies>
+ <dependency>
+ <groupId>commons-configuration</groupId>
+ <artifactId>commons-configuration</artifactId>
+ <version>1.10</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven</groupId>
+ <artifactId>maven-archiver</artifactId>
+ <version>2.6</version>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <plugins>
+ <plugin>
+ <artifactId>maven-assembly-plugin</artifactId>
+ <version>${testVersion}</version>
+ <executions>
+ <execution>
+ <id>make-assembly</id>
+ <phase>package</phase>
+ <goals>
+ <goal>single</goal>
+ </goals>
+ <configuration>
+ <descriptors>
+ <descriptor>assembly.xml</descriptor>
+ </descriptors>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+
+</project>
Added: maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/massembly-619/verify.bsh
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/massembly-619/verify.bsh?rev=1636414&view=auto
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/massembly-619/verify.bsh (added)
+++ maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/massembly-619/verify.bsh Mon Nov 3 18:28:08 2014
@@ -0,0 +1,35 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import java.io.*;
+import java.util.zip.*;
+
+ZipFile zf = new ZipFile( new File( basedir, "target/bug-test-1.0-SNAPSHOT-deploy-zip.zip" ) );
+
+ZipEntry child1InclEntry = zf.getEntry( "bug-test-1.0-SNAPSHOT/dir2/classworlds-1.1.jar" );
+
+if ( child1InclEntry != null )
+{
+ System.out.println( "Unexpected file in jar !" );
+ return false;
+}
+
+return true;
+
+
Modified: maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/phase/DependencySetAssemblyPhase.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/phase/DependencySetAssemblyPhase.java?rev=1636414&r1=1636413&r2=1636414&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/phase/DependencySetAssemblyPhase.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/phase/DependencySetAssemblyPhase.java Mon Nov 3 18:28:08 2014
@@ -28,6 +28,7 @@ import org.apache.maven.plugin.assembly.
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.model.DependencySet;
import org.apache.maven.project.MavenProjectBuilder;
import org.codehaus.plexus.archiver.Archiver;
import org.codehaus.plexus.archiver.manager.ArchiverManager;
@@ -36,6 +37,8 @@ import org.codehaus.plexus.component.ann
import org.codehaus.plexus.logging.AbstractLogEnabled;
import org.codehaus.plexus.logging.Logger;
+import java.util.Collections;
+import java.util.Map;
import java.util.Set;
/**
@@ -87,11 +90,15 @@ public class DependencySetAssemblyPhase
DependencyResolutionException
{
- Set<Artifact> resolved = dependencyResolver.resolve( assembly, configSource );
- final AddDependencySetsTask task =
- new AddDependencySetsTask( assembly.getDependencySets(), resolved, configSource.getProject(),
- projectBuilder, getLogger() );
+ Map<DependencySet, Set<Artifact>>
+ resolved = dependencyResolver.resolveDependencySets( assembly, configSource, assembly.getDependencySets() );
+ for ( Map.Entry<DependencySet, Set<Artifact>> dependencySetSetEntry : resolved.entrySet() )
+ {
+ final AddDependencySetsTask task =
+ new AddDependencySetsTask( Collections.singletonList(dependencySetSetEntry.getKey()), dependencySetSetEntry.getValue(), configSource.getProject(),
+ projectBuilder, getLogger() );
- task.execute( archiver, configSource );
+ task.execute( archiver, configSource );
+ }
}
}
Modified: maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/phase/ModuleSetAssemblyPhase.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/phase/ModuleSetAssemblyPhase.java?rev=1636414&r1=1636413&r2=1636414&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/phase/ModuleSetAssemblyPhase.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/phase/ModuleSetAssemblyPhase.java Mon Nov 3 18:28:08 2014
@@ -231,7 +231,9 @@ public class ModuleSetAssemblyPhase
if ( depSets != null )
{
- Set<Artifact> resolved = dependencyResolver.resolve( assembly, moduleSet, configSource );
+ Map<DependencySet, Set<Artifact>> dependencySetSetMap =
+ dependencyResolver.resolveDependencySets( assembly, moduleSet, configSource,
+ depSets);
for ( final DependencySet ds : depSets )
{
@@ -261,16 +263,21 @@ public class ModuleSetAssemblyPhase
{
getLogger().debug( "Processing binary dependencies for module project: " + moduleProject.getId() );
- final AddDependencySetsTask task =
- new AddDependencySetsTask( depSets, resolved, moduleProject, projectBuilder,
- getLogger() );
-
- task.setModuleProject( moduleProject );
- task.setModuleArtifact( chosenModuleArtifacts.get( moduleProject ) );
- task.setDefaultOutputDirectory( binaries.getOutputDirectory() );
- task.setDefaultOutputFileNameMapping( binaries.getOutputFileNameMapping() );
+ for ( Map.Entry<DependencySet, Set<Artifact>> dependencySetSetEntry : dependencySetSetMap.entrySet() )
+ {
+ final AddDependencySetsTask task =
+ new AddDependencySetsTask( Collections.singletonList( dependencySetSetEntry.getKey() ), dependencySetSetEntry.getValue(),
+ moduleProject, projectBuilder,
+ getLogger() );
+
+ task.setModuleProject( moduleProject );
+ task.setModuleArtifact( chosenModuleArtifacts.get( moduleProject ) );
+ task.setDefaultOutputDirectory( binaries.getOutputDirectory() );
+ task.setDefaultOutputFileNameMapping( binaries.getOutputFileNameMapping() );
+
+ task.execute( archiver, configSource );
- task.execute( archiver, configSource );
+ }
}
}
}
Modified: maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/artifact/DefaultDependencyResolver.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/artifact/DefaultDependencyResolver.java?rev=1636414&r1=1636413&r2=1636414&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/artifact/DefaultDependencyResolver.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/artifact/DefaultDependencyResolver.java Mon Nov 3 18:28:08 2014
@@ -22,8 +22,10 @@ package org.apache.maven.plugin.assembly
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
+import java.util.LinkedHashMap;
import java.util.LinkedHashSet;
import java.util.List;
+import java.util.Map;
import java.util.Set;
import org.apache.maven.artifact.Artifact;
@@ -73,6 +75,7 @@ public class DefaultDependencyResolver
@Requirement
private ArtifactFactory factory;
+ @SuppressWarnings( "UnusedDeclaration" )
public DefaultDependencyResolver()
{
// for plexus init
@@ -87,72 +90,99 @@ public class DefaultDependencyResolver
enableLogging( logger );
}
- public Set<Artifact> resolve( final Assembly assembly, final AssemblerConfigurationSource configSource )
+ public Map<DependencySet, Set<Artifact>> resolveDependencySets( final Assembly assembly, ModuleSet moduleSet,
+ final AssemblerConfigurationSource configSource,
+ List<DependencySet> dependencySets )
throws DependencyResolutionException
{
- final MavenProject currentProject = configSource.getProject();
+ Map<DependencySet, Set<Artifact>> result = new LinkedHashMap<DependencySet, Set<Artifact>>();
- final ResolutionManagementInfo info = new ResolutionManagementInfo( currentProject );
- updateRepositoryResolutionRequirements( assembly, info );
- updateDependencySetResolutionRequirements( assembly.getDependencySets(), info,
- AssemblyId.createAssemblyId( assembly ), currentProject );
-
- if ( !info.isResolutionRequired() )
+ for ( DependencySet dependencySet : dependencySets )
{
- return new HashSet<Artifact>();
- }
- final List<ArtifactRepository> repos =
- aggregateRemoteArtifactRepositories( configSource.getRemoteRepositories(), info.getEnabledProjects() );
+ final MavenProject currentProject = configSource.getProject();
- Set<Artifact> artifacts = info.getArtifacts();
- if ( info.isResolvedTransitively() )
- {
- getLogger().debug( "Resolving project dependencies transitively." );
- artifacts = resolveTransitively( artifacts, repos, info, configSource );
- }
- else
- {
- getLogger().debug( "Resolving project dependencies ONLY. Transitive dependencies WILL NOT be included in the results." );
- artifacts = resolveNonTransitively( assembly, artifacts, configSource, repos );
- }
+ final ResolutionManagementInfo info = new ResolutionManagementInfo( currentProject );
+ updateRepositoryResolutionRequirements( assembly, info );
+ final AssemblyId assemblyId = AssemblyId.createAssemblyId( assembly );
+ updateDependencySetResolutionRequirements( assembly.getDependencySets(), info, assemblyId, currentProject );
+ updateModuleSetResolutionRequirements( assemblyId, moduleSet, info, configSource );
+
+ Set<Artifact> artifacts;
+ if ( info.isResolutionRequired() )
+ {
+ final List<ArtifactRepository> repos =
+ aggregateRemoteArtifactRepositories( configSource.getRemoteRepositories(),
+ info.getEnabledProjects() );
- return artifacts;
+ artifacts = info.getArtifacts();
+ if ( info.isResolvedTransitively() )
+ {
+ getLogger().debug( "Resolving project dependencies transitively." );
+ artifacts = resolveTransitively( artifacts, repos, info, configSource );
+ }
+ else
+ {
+ getLogger().debug(
+ "Resolving project dependencies ONLY. Transitive dependencies WILL NOT be included in the results." );
+ artifacts = resolveNonTransitively( assembly, artifacts, configSource, repos );
+ }
+ }
+ else
+ {
+ artifacts = new HashSet<Artifact>();
+ }
+ result.put( dependencySet, artifacts );
+
+ }
+ return result;
}
- public Set<Artifact> resolve( final Assembly assembly, ModuleSet moduleSet,
- final AssemblerConfigurationSource configSource )
+ public Map<DependencySet, Set<Artifact>> resolveDependencySets( final Assembly assembly,
+ final AssemblerConfigurationSource configSource,
+ List<DependencySet> dependencySets )
throws DependencyResolutionException
{
- final MavenProject currentProject = configSource.getProject();
+ Map<DependencySet, Set<Artifact>> result = new LinkedHashMap<DependencySet, Set<Artifact>>();
- final ResolutionManagementInfo info = new ResolutionManagementInfo( currentProject );
- updateRepositoryResolutionRequirements( assembly, info );
- final AssemblyId assemblyId = AssemblyId.createAssemblyId( assembly );
- updateDependencySetResolutionRequirements( assembly.getDependencySets(), info, assemblyId, currentProject );
- updateModuleSetResolutionRequirements( assemblyId, moduleSet, info, configSource );
-
- if ( !info.isResolutionRequired() )
+ for ( DependencySet dependencySet : dependencySets )
{
- return new HashSet<Artifact>();
- }
- final List<ArtifactRepository> repos =
- aggregateRemoteArtifactRepositories( configSource.getRemoteRepositories(), info.getEnabledProjects() );
+ final MavenProject currentProject = configSource.getProject();
- Set<Artifact> artifacts = info.getArtifacts();
- if ( info.isResolvedTransitively() )
- {
- getLogger().debug( "Resolving project dependencies transitively." );
- artifacts = resolveTransitively( artifacts, repos, info, configSource );
- }
- else
- {
- getLogger().debug( "Resolving project dependencies ONLY. Transitive dependencies WILL NOT be included in the results." );
- artifacts = resolveNonTransitively( assembly, artifacts, configSource, repos );
- }
+ final ResolutionManagementInfo info = new ResolutionManagementInfo( currentProject );
+ updateRepositoryResolutionRequirements( assembly, info );
+ final AssemblyId assemblyId = AssemblyId.createAssemblyId( assembly );
+ updateDependencySetResolutionRequirements( dependencySet , info, assemblyId, currentProject );
+
+ Set<Artifact> artifacts;
+ if ( info.isResolutionRequired() )
+ {
+ final List<ArtifactRepository> repos =
+ aggregateRemoteArtifactRepositories( configSource.getRemoteRepositories(),
+ info.getEnabledProjects() );
+
+ artifacts = info.getArtifacts();
+ if ( info.isResolvedTransitively() )
+ {
+ getLogger().debug( "Resolving project dependencies transitively." );
+ artifacts = resolveTransitively( artifacts, repos, info, configSource );
+ }
+ else
+ {
+ getLogger().debug(
+ "Resolving project dependencies ONLY. Transitive dependencies WILL NOT be included in the results." );
+ artifacts = resolveNonTransitively( assembly, artifacts, configSource, repos );
+ }
+ }
+ else
+ {
+ artifacts = new HashSet<Artifact>();
+ }
+ result.put( dependencySet, artifacts );
- return artifacts;
+ }
+ return result;
}
Set<Artifact> resolveNonTransitively( final Assembly assembly, final Set<Artifact> dependencyArtifacts,
@@ -174,8 +204,8 @@ public class DefaultDependencyResolver
{
if ( getLogger().isDebugEnabled() )
{
- getLogger().debug( "Failed to resolve: " + depArtifact.getId() + " for assembly: "
- + assembly.getId() );
+ getLogger().debug(
+ "Failed to resolve: " + depArtifact.getId() + " for assembly: " + assembly.getId() );
}
missing.add( depArtifact );
}
@@ -183,8 +213,8 @@ public class DefaultDependencyResolver
{
if ( getLogger().isDebugEnabled() )
{
- getLogger().debug( "Failed to resolve: " + depArtifact.getId() + " for assembly: "
- + assembly.getId() );
+ getLogger().debug(
+ "Failed to resolve: " + depArtifact.getId() + " for assembly: " + assembly.getId() );
}
missing.add( depArtifact );
}
@@ -220,10 +250,9 @@ public class DefaultDependencyResolver
ArtifactResolutionResult result;
try
{
- result =
- resolver.resolveTransitively( dependencyArtifacts, project.getArtifact(),
- project.getManagedVersionMap(), localRepository, repos, metadataSource,
- filter );
+ result = resolver.resolveTransitively( dependencyArtifacts, project.getArtifact(),
+ project.getManagedVersionMap(), localRepository, repos,
+ metadataSource, filter );
}
catch ( final ArtifactResolutionException e )
{
@@ -330,6 +359,9 @@ public class DefaultDependencyResolver
for ( final DependencySet set : depSets )
{
// Surely this must be a bug, if there's multiple depSets with different isUseTransitiveDependencies
+ // Yes; this is MASSEMBLY-619, possibly others. Methods using this version should probably be axed
+ // MASSEMBLY-619 is now delegated to different overload.
+ // This probably means there is a parallel bleed between dependencies for module sets.
requirements.setResolvedTransitively( set.isUseTransitiveDependencies() );
enableScope( set.getScope(), requirements );
@@ -353,18 +385,58 @@ public class DefaultDependencyResolver
catch ( final InvalidDependencyVersionException e )
{
throw new DependencyResolutionException(
- "Failed to create dependency artifacts for resolution. Assembly: "
- + assemblyId, e );
+ "Failed to create dependency artifacts for resolution. Assembly: " + assemblyId, e );
}
}
requirements.addArtifacts( dependencyArtifacts );
- getLogger().debug( "Dependencies for project: " + project.getId() + " are:\n"
- + StringUtils.join( dependencyArtifacts.iterator(), "\n" ) );
+ getLogger().debug( "Dependencies for project: " + project.getId() + " are:\n" + StringUtils.join(
+ dependencyArtifacts.iterator(), "\n" ) );
}
}
}
+
+ @SuppressWarnings( "unchecked" )
+ void updateDependencySetResolutionRequirements( final DependencySet set,
+ final ResolutionManagementInfo requirements, AssemblyId assemblyId,
+ final MavenProject... projects )
+ throws DependencyResolutionException
+ {
+ requirements.setResolutionRequired( true );
+
+ requirements.setResolvedTransitively( set.isUseTransitiveDependencies() );
+
+ enableScope( set.getScope(), requirements );
+
+ for ( final MavenProject project : projects )
+ {
+ if ( project == null )
+ {
+ continue;
+ }
+
+ Set<Artifact> dependencyArtifacts = project.getDependencyArtifacts();
+ if ( dependencyArtifacts == null )
+ {
+ try
+ {
+ dependencyArtifacts = project.createArtifacts( factory, null, requirements.getScopeFilter() );
+ project.setDependencyArtifacts( dependencyArtifacts );
+ }
+ catch ( final InvalidDependencyVersionException e )
+ {
+ throw new DependencyResolutionException(
+ "Failed to create dependency artifacts for resolution. Assembly: " + assemblyId, e );
+ }
+ }
+
+ requirements.addArtifacts( dependencyArtifacts );
+ getLogger().debug( "Dependencies for project: " + project.getId() + " are:\n" + StringUtils.join(
+ dependencyArtifacts.iterator(), "\n" ) );
+ }
+ }
+
private void enableScope( final String scope, final ResolutionManagementInfo requirements )
{
if ( Artifact.SCOPE_COMPILE.equals( scope ) )
Modified: maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/artifact/DependencyResolver.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/artifact/DependencyResolver.java?rev=1636414&r1=1636413&r2=1636414&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/artifact/DependencyResolver.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/artifact/DependencyResolver.java Mon Nov 3 18:28:08 2014
@@ -22,8 +22,11 @@ package org.apache.maven.plugin.assembly
import org.apache.maven.artifact.Artifact;
import org.apache.maven.plugin.assembly.AssemblerConfigurationSource;
import org.apache.maven.plugin.assembly.model.Assembly;
+import org.apache.maven.plugin.assembly.model.DependencySet;
import org.apache.maven.plugin.assembly.model.ModuleSet;
+import java.util.List;
+import java.util.Map;
import java.util.Set;
/**
@@ -35,13 +38,15 @@ import java.util.Set;
public interface DependencyResolver
{
- /**
- * Resolve the project dependencies, according to the supplied configuration.
- */
- Set<Artifact> resolve( Assembly assembly, AssemblerConfigurationSource configSource )
- throws DependencyResolutionException;
+ public Map<DependencySet, Set<Artifact>> resolveDependencySets( final Assembly assembly, ModuleSet moduleSet,
+ final AssemblerConfigurationSource configSource,
+ List<DependencySet> dependencySets )
+ throws DependencyResolutionException
+ ;
+ public Map<DependencySet, Set<Artifact>> resolveDependencySets( final Assembly assembly,
+ final AssemblerConfigurationSource configSource,
+ List<DependencySet> dependencySets )
+ throws DependencyResolutionException
+ ;
- Set<Artifact> resolve( final Assembly assembly, ModuleSet moduleSet,
- final AssemblerConfigurationSource configSource )
- throws DependencyResolutionException;
}
\ No newline at end of file
Modified: maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/phase/DependencySetAssemblyPhaseTest.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/phase/DependencySetAssemblyPhaseTest.java?rev=1636414&r1=1636413&r2=1636414&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/phase/DependencySetAssemblyPhaseTest.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/phase/DependencySetAssemblyPhaseTest.java Mon Nov 3 18:28:08 2014
@@ -101,11 +101,11 @@ public class DependencySetAssemblyPhaseT
macTask.expectBuildFromRepository( depProject );
- DependencyResolver dr = EasyMock.createMock(DependencyResolver.class);
+ macTask.expectResolveDependencySets();
mm.replayAll();
- createPhase( macTask, logger, dr ).execute( assembly, macTask.archiver, macTask.configSource );
+ createPhase( macTask, logger, macTask.dependencyResolver ).execute( assembly, macTask.archiver, macTask.configSource );
mm.verifyAll();
}
@@ -134,11 +134,11 @@ public class DependencySetAssemblyPhaseT
final MockAndControlForAddDependencySetsTask macTask =
new MockAndControlForAddDependencySetsTask( mm, null );
- DependencyResolver dr = EasyMock.createMock(DependencyResolver.class);
+ macTask.expectResolveDependencySets();
mm.replayAll();
- createPhase( macTask, logger, dr ).execute( assembly, null, macTask.configSource );
+ createPhase( macTask, logger, macTask.dependencyResolver ).execute( assembly, null, macTask.configSource );
mm.verifyAll();
}
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=1636414&r1=1636413&r2=1636414&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 Mon Nov 3 18:28:08 2014
@@ -305,9 +305,10 @@ public class ModuleSetAssemblyPhaseTest
final Logger logger = new ConsoleLogger( Logger.LEVEL_DEBUG, "test" );
+ macTask.expectResolveDependencySets();
mm.replayAll();
- final ModuleSetAssemblyPhase phase = createPhase( logger, null );
+ final ModuleSetAssemblyPhase phase = createPhase( logger, macTask.dependencyResolver, null);
phase.execute( assembly, macTask.archiver, macTask.configSource );
mm.verifyAll();
@@ -383,11 +384,13 @@ public class ModuleSetAssemblyPhaseTest
final Set<MavenProject> projects = singleton( project );
+ macTask.expectResolveDependencySets();
+
mm.replayAll();
final Logger logger = new ConsoleLogger( Logger.LEVEL_DEBUG, "test" );
- createPhase( logger, null ).addModuleBinaries( null, null, binaries, projects, macTask.archiver, macTask.configSource );
+ createPhase( logger, macTask.dependencyResolver, null ).addModuleBinaries( null, null, binaries, projects, macTask.archiver, macTask.configSource );
mm.verifyAll();
}
@@ -462,13 +465,15 @@ public class ModuleSetAssemblyPhaseTest
final Set<MavenProject> projects = singleton( project );
+ macTask.expectResolveDependencySets();
+
mm.replayAll();
final Logger logger = new ConsoleLogger( Logger.LEVEL_DEBUG, "test" );
Assembly assembly = new Assembly();
- createPhase( logger, null ).addModuleBinaries( null, null, binaries, projects, macTask.archiver, macTask.configSource );
+ createPhase( logger, macTask.dependencyResolver, null ).addModuleBinaries( null, null, binaries, projects, macTask.archiver, macTask.configSource );
mm.verifyAll();
}
@@ -870,4 +875,8 @@ public class ModuleSetAssemblyPhaseTest
return new ModuleSetAssemblyPhase( projectBuilder, dr, logger );
}
+ private ModuleSetAssemblyPhase createPhase( final Logger logger, DependencyResolver dr, MavenProjectBuilder projectBuilder1 )
+ {
+ return new ModuleSetAssemblyPhase( projectBuilder1, dr, logger );
+ }
}
Modified: maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/task/testutils/MockAndControlForAddArtifactTask.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/task/testutils/MockAndControlForAddArtifactTask.java?rev=1636414&r1=1636413&r2=1636414&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/task/testutils/MockAndControlForAddArtifactTask.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/task/testutils/MockAndControlForAddArtifactTask.java Mon Nov 3 18:28:08 2014
@@ -20,11 +20,19 @@ package org.apache.maven.plugin.assembly
*/
import java.io.File;
+import java.util.LinkedHashMap;
import java.util.List;
+import java.util.Set;
import junit.framework.Assert;
+import org.apache.maven.artifact.Artifact;
import org.apache.maven.plugin.assembly.AssemblerConfigurationSource;
+import org.apache.maven.plugin.assembly.artifact.DependencyResolutionException;
+import org.apache.maven.plugin.assembly.artifact.DependencyResolver;
+import org.apache.maven.plugin.assembly.model.Assembly;
+import org.apache.maven.plugin.assembly.model.DependencySet;
+import org.apache.maven.plugin.assembly.model.ModuleSet;
import org.apache.maven.project.MavenProject;
import org.codehaus.plexus.archiver.ArchivedFileSet;
import org.codehaus.plexus.archiver.Archiver;
@@ -45,6 +53,8 @@ public class MockAndControlForAddArtifac
private MavenProject project = null;
+ public final DependencyResolver dependencyResolver;
+
public MockAndControlForAddArtifactTask( final EasyMockSupport mockManager )
{
this( mockManager, null );
@@ -56,6 +66,7 @@ public class MockAndControlForAddArtifac
archiver = mockManager.createMock(Archiver.class);
configSource = mockManager.createMock(AssemblerConfigurationSource.class);
+ dependencyResolver = mockManager.createMock( DependencyResolver.class);
enableDefaultExpectations();
}
@@ -157,4 +168,14 @@ public class MockAndControlForAddArtifac
expect(configSource.getReactorProjects()).andReturn( projects ).atLeastOnce();
}
+
+ public void expectResolveDependencySets()
+ throws DependencyResolutionException
+ {
+ expect( dependencyResolver.resolveDependencySets( (Assembly) anyObject(), (ModuleSet) anyObject(),
+ (AssemblerConfigurationSource) anyObject(), (List<DependencySet>) anyObject() ))
+ .andReturn( new LinkedHashMap<DependencySet, Set<Artifact>>( ) ).anyTimes();
+
+ }
+
}
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=1636414&r1=1636413&r2=1636414&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 Mon Nov 3 18:28:08 2014
@@ -20,7 +20,9 @@ package org.apache.maven.plugin.assembly
*/
import java.io.File;
+import java.util.LinkedHashMap;
import java.util.List;
+import java.util.Set;
import junit.framework.Assert;
@@ -28,6 +30,11 @@ import org.apache.maven.artifact.Artifac
import org.apache.maven.artifact.repository.ArtifactRepository;
import org.apache.maven.execution.MavenSession;
import org.apache.maven.plugin.assembly.AssemblerConfigurationSource;
+import org.apache.maven.plugin.assembly.artifact.DependencyResolutionException;
+import org.apache.maven.plugin.assembly.artifact.DependencyResolver;
+import org.apache.maven.plugin.assembly.model.Assembly;
+import org.apache.maven.plugin.assembly.model.DependencySet;
+import org.apache.maven.plugin.assembly.model.ModuleSet;
import org.apache.maven.project.MavenProject;
import org.apache.maven.project.MavenProjectBuilder;
import org.apache.maven.project.ProjectBuildingException;
@@ -56,6 +63,9 @@ public class MockAndControlForAddDepende
private final MavenProject project;
+ public final DependencyResolver dependencyResolver;
+
+
public MockAndControlForAddDependencySetsTask( final EasyMockSupport mockManager )
{
this( mockManager, null );
@@ -73,6 +83,9 @@ public class MockAndControlForAddDepende
archiverManager = mockManager.createMock(ArchiverManager.class);
+ dependencyResolver = mockManager.createMock( DependencyResolver.class);
+
+
enableDefaultExpectations();
}
@@ -206,4 +219,14 @@ public class MockAndControlForAddDepende
expect(configSource.getMavenSession()).andReturn( session ).anyTimes();
}
+ public void expectResolveDependencySets()
+ throws DependencyResolutionException
+ {
+ expect( dependencyResolver.resolveDependencySets( (Assembly) anyObject(),
+ (AssemblerConfigurationSource) anyObject(), (List<DependencySet>) anyObject() ))
+ .andReturn( new LinkedHashMap<DependencySet, Set<Artifact>>( ) ).anyTimes();
+
+ }
+
+
}