Description
Jörg Hohwiller opened MNG-8418 and commented
I am testing migration of a complex project (600+ modules) to maven 4.0.
While I am fully aware that maven 4.0.0-rc1 is not supposed to be production ready, I already want to do further testing to report blockers from real-life projects that could prevent a smooth upgrade from maven 3 (3.9.9) to maven 4 (once 4.0.0 official release is published).
The build (invocation was {}mvn install -DskipTests -X{
}) is working with maven 3 (tested with 3.8.6, 3.9.6 and 3.9.9) but it failes with maven 4 (also with latest 4.0.0-rc-1):
[ERROR] Failed to execute goal on project myproject.foundation.client: Could not collect dependencies for project com.customer:myproject.foundation.client:jar:4.25.2.0-SNAPSHOT
[ERROR] java.lang.IllegalStateException: Duplicate key default (attempted merging values org.apache.maven.api.model.Activation@1556c428 and org.apache.maven.api.model.Activation@62ed65df)
[ERROR] Caused by: Duplicate key default (attempted merging values org.apache.maven.api.model.Activation@1556c428 and org.apache.maven.api.model.Activation@62ed65df)
[ERROR] java.lang.IllegalStateException: Duplicate key default (attempted merging values org.apache.maven.api.model.Activation@1556c428 and org.apache.maven.api.model.Activation@62ed65df)
[ERROR] Caused by: Duplicate key default (attempted merging values org.apache.maven.api.model.Activation@1556c428 and org.apache.maven.api.model.Activation@62ed65df)
[ERROR] : Failed to collect dependencies at com.customer.mylibrary:mylibrary-clientcomponents:jar:3.39.0.0 -> com.miglayout:miglayout:jar:3.7.2
[ERROR] -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal on project myproject.foundation.client: Could not collect dependencies for project com.customer:myproject.foundation.client:jar:4.25.2.0-SNAPSHOT
java.lang.IllegalStateException: Duplicate key default (attempted merging values org.apache.maven.api.model.Activation@1556c428 and org.apache.maven.api.model.Activation@62ed65df)
Caused by: Duplicate key default (attempted merging values org.apache.maven.api.model.Activation@1556c428 and org.apache.maven.api.model.Activation@62ed65df)
java.lang.IllegalStateException: Duplicate key default (attempted merging values org.apache.maven.api.model.Activation@1556c428 and org.apache.maven.api.model.Activation@62ed65df)
Caused by: Duplicate key default (attempted merging values org.apache.maven.api.model.Activation@1556c428 and org.apache.maven.api.model.Activation@62ed65df) at org.apache.maven.lifecycle.internal.LifecycleDependencyResolver.getDependencies(LifecycleDependencyResolver.java:279)
at org.apache.maven.lifecycle.internal.LifecycleDependencyResolver.resolveProjectArtifacts(LifecycleDependencyResolver.java:208)
at org.apache.maven.lifecycle.internal.LifecycleDependencyResolver.resolveProjectDependencies(LifecycleDependencyResolver.java:128)
at org.apache.maven.lifecycle.internal.MojoExecutor.ensureDependenciesAreResolved(MojoExecutor.java:368)
at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute(MojoExecutor.java:307)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:214)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:179)
at org.apache.maven.lifecycle.internal.MojoExecutor$1.run(MojoExecutor.java:168)
at org.apache.maven.buildcache.BuildCacheMojosExecutionStrategy.execute(BuildCacheMojosExecutionStrategy.java:145)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:165)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:107)
at org.apache.maven.lifecycle.internal.builder.multithreaded.MultiThreadedBuilder.lambda$createBuildCallable$1(MultiThreadedBuilder.java:191)
at java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
at java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
at java.lang.Thread.run(Thread.java:840)
Caused by: org.apache.maven.project.DependencyResolutionException: Could not collect dependencies for project com.customer:myproject.foundation.client:jar:4.25.2.0-SNAPSHOT
java.lang.IllegalStateException: Duplicate key default (attempted merging values org.apache.maven.api.model.Activation@1556c428 and org.apache.maven.api.model.Activation@62ed65df)
Caused by: Duplicate key default (attempted merging values org.apache.maven.api.model.Activation@1556c428 and org.apache.maven.api.model.Activation@62ed65df)
java.lang.IllegalStateException: Duplicate key default (attempted merging values org.apache.maven.api.model.Activation@1556c428 and org.apache.maven.api.model.Activation@62ed65df)
Caused by: Duplicate key default (attempted merging values org.apache.maven.api.model.Activation@1556c428 and org.apache.maven.api.model.Activation@62ed65df) at org.apache.maven.project.DefaultProjectDependenciesResolver.resolve(DefaultProjectDependenciesResolver.java:163)
at org.apache.maven.lifecycle.internal.LifecycleDependencyResolver.getDependencies(LifecycleDependencyResolver.java:260)
at org.apache.maven.lifecycle.internal.LifecycleDependencyResolver.resolveProjectArtifacts(LifecycleDependencyResolver.java:208)
at org.apache.maven.lifecycle.internal.LifecycleDependencyResolver.resolveProjectDependencies(LifecycleDependencyResolver.java:128)
at org.apache.maven.lifecycle.internal.MojoExecutor.ensureDependenciesAreResolved(MojoExecutor.java:368)
at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute(MojoExecutor.java:307)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:214)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:179)
at org.apache.maven.lifecycle.internal.MojoExecutor$1.run(MojoExecutor.java:168)
at org.apache.maven.buildcache.BuildCacheMojosExecutionStrategy.execute(BuildCacheMojosExecutionStrategy.java:145)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:165)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:107)
at org.apache.maven.lifecycle.internal.builder.multithreaded.MultiThreadedBuilder.lambda$createBuildCallable$1(MultiThreadedBuilder.java:191)
at java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
at java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
at java.lang.Thread.run(Thread.java:840)
Caused by: org.eclipse.aether.collection.DependencyCollectionException: Failed to collect dependencies at com.customer.mylibrary:mylibrary-clientcomponents:jar:3.39.0.0 -> com.miglayout:miglayout:jar:3.7.2
at org.eclipse.aether.internal.impl.collect.DependencyCollectorDelegate.collectDependencies(DependencyCollectorDelegate.java:260)
at org.eclipse.aether.internal.impl.collect.DefaultDependencyCollector.collectDependencies(DefaultDependencyCollector.java:79)
at org.eclipse.aether.internal.impl.DefaultRepositorySystem.collectDependencies(DefaultRepositorySystem.java:241)
at org.apache.maven.project.DefaultProjectDependenciesResolver.resolve(DefaultProjectDependenciesResolver.java:156)
at org.apache.maven.lifecycle.internal.LifecycleDependencyResolver.getDependencies(LifecycleDependencyResolver.java:260)
at org.apache.maven.lifecycle.internal.LifecycleDependencyResolver.resolveProjectArtifacts(LifecycleDependencyResolver.java:208)
at org.apache.maven.lifecycle.internal.LifecycleDependencyResolver.resolveProjectDependencies(LifecycleDependencyResolver.java:128)
at org.apache.maven.lifecycle.internal.MojoExecutor.ensureDependenciesAreResolved(MojoExecutor.java:368)
at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute(MojoExecutor.java:307)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:214)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:179)
at org.apache.maven.lifecycle.internal.MojoExecutor$1.run(MojoExecutor.java:168)
at org.apache.maven.buildcache.BuildCacheMojosExecutionStrategy.execute(BuildCacheMojosExecutionStrategy.java:145)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:165)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:107)
at org.apache.maven.lifecycle.internal.builder.multithreaded.MultiThreadedBuilder.lambda$createBuildCallable$1(MultiThreadedBuilder.java:191)
at java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
at java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
at java.lang.Thread.run(Thread.java:840)
Caused by: java.util.concurrent.ExecutionException: java.lang.IllegalStateException: Duplicate key default (attempted merging values org.apache.maven.api.model.Activation@1556c428 and org.apache.maven.api.model.Activation@62ed65df)
at java.util.concurrent.FutureTask.report(FutureTask.java:122)
at java.util.concurrent.FutureTask.get(FutureTask.java:191)
at org.eclipse.aether.internal.impl.collect.bf.BfDependencyCollector.processDependency(BfDependencyCollector.java:237)
at org.eclipse.aether.internal.impl.collect.bf.BfDependencyCollector.doCollectDependencies(BfDependencyCollector.java:202)
at org.eclipse.aether.internal.impl.collect.DependencyCollectorDelegate.collectDependencies(DependencyCollectorDelegate.java:222)
at org.eclipse.aether.internal.impl.collect.DefaultDependencyCollector.collectDependencies(DefaultDependencyCollector.java:79)
at org.eclipse.aether.internal.impl.DefaultRepositorySystem.collectDependencies(DefaultRepositorySystem.java:241)
at org.apache.maven.project.DefaultProjectDependenciesResolver.resolve(DefaultProjectDependenciesResolver.java:156)
at org.apache.maven.lifecycle.internal.LifecycleDependencyResolver.getDependencies(LifecycleDependencyResolver.java:260)
at org.apache.maven.lifecycle.internal.LifecycleDependencyResolver.resolveProjectArtifacts(LifecycleDependencyResolver.java:208)
at org.apache.maven.lifecycle.internal.LifecycleDependencyResolver.resolveProjectDependencies(LifecycleDependencyResolver.java:128)
at org.apache.maven.lifecycle.internal.MojoExecutor.ensureDependenciesAreResolved(MojoExecutor.java:368)
at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute(MojoExecutor.java:307)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:214)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:179)
at org.apache.maven.lifecycle.internal.MojoExecutor$1.run(MojoExecutor.java:168)
at org.apache.maven.buildcache.BuildCacheMojosExecutionStrategy.execute(BuildCacheMojosExecutionStrategy.java:145)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:165)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:107)
at org.apache.maven.lifecycle.internal.builder.multithreaded.MultiThreadedBuilder.lambda$createBuildCallable$1(MultiThreadedBuilder.java:191)
at java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
at java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
at java.lang.Thread.run(Thread.java:840)
Caused by: java.lang.IllegalStateException: Duplicate key default (attempted merging values org.apache.maven.api.model.Activation@1556c428 and org.apache.maven.api.model.Activation@62ed65df)
at java.util.stream.Collectors.duplicateKeyException(Collectors.java:135)
at java.util.stream.Collectors.lambda$uniqKeysMapAccumulator$1(Collectors.java:182)
at java.util.stream.ReduceOps$3ReducingSink.accept(ReduceOps.java:169)
at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:179)
at java.util.AbstractList$RandomAccessSpliterator.forEachRemaining(AbstractList.java:720)
at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921)
at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:682)
at org.apache.maven.internal.impl.model.DefaultModelBuilder.getProfileActivations(DefaultModelBuilder.java:1878)
at org.apache.maven.internal.impl.model.DefaultModelBuilder$ModelBuilderSessionState.activateFileModel(DefaultModelBuilder.java:1135)
at org.apache.maven.internal.impl.model.DefaultModelBuilder$ModelBuilderSessionState.readEffectiveModel(DefaultModelBuilder.java:1154)
at org.apache.maven.internal.impl.model.DefaultModelBuilder$ModelBuilderSessionState.buildEffectiveModel(DefaultModelBuilder.java:807)
at org.apache.maven.internal.impl.model.DefaultModelBuilder$ModelBuilderSessionImpl.build(DefaultModelBuilder.java:231)
at org.apache.maven.internal.impl.resolver.DefaultArtifactDescriptorReader.loadPom(DefaultArtifactDescriptorReader.java:207)
at org.apache.maven.internal.impl.resolver.DefaultArtifactDescriptorReader.readArtifactDescriptor(DefaultArtifactDescriptorReader.java:103)
at org.eclipse.aether.internal.impl.collect.DependencyCollectorDelegate.resolveCachedArtifactDescriptor(DependencyCollectorDelegate.java:484)
at org.eclipse.aether.internal.impl.collect.bf.BfDependencyCollector.resolveDescriptorForVersion(BfDependencyCollector.java:463)
at org.eclipse.aether.internal.impl.collect.bf.BfDependencyCollector.lambda$resolveArtifactDescriptorAsync$1(BfDependencyCollector.java:437)
at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1625)
at java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:762)
at org.eclipse.aether.internal.impl.collect.bf.BfDependencyCollector.lambda$resolveArtifactDescriptorAsync$4(BfDependencyCollector.java:436)
at java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
at java.lang.Thread.run(Thread.java:840)
[ERROR]
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/DependencyResolutionException
[ERROR]
[ERROR] After correcting the problems, you can resume the build with the command
[ERROR] mvn [args] -r
[DEBUG] Shutting down adapter factory; available factories [file-lock, rwlock-local, semaphore-local, noop]; available name mappers [discriminating, file-gav, file-hgav, file-static, gav, static]
[DEBUG] Shutting down 'file-lock' factory
[DEBUG] Shutting down 'rwlock-local' factory
[DEBUG] Shutting down 'semaphore-local' factory
[DEBUG] Shutting down 'noop' factory
I already checked the POM of {}mylibrary-clientcomponents:jar:3.39.0.0{
}. There are 4 parent POMs involved from where the dependency to com.miglayout:miglayout:jar:3.7.2
is defined but it is not duplicated anywhere. Since the error indicates activations that IMHO only exist in profiles I also checked all profiles with activations. All profiles share a unique ID. The activations in the mylibrary POMs are always:
<activation>
<activeByDefault>false</activeByDefault>
</activation>
In the myproject.foundation.client:jar:4.25.2.0-SNAPSHOT
POM there is also a profile with a different ID that has this activation:
<profile>
<id>macos</id>
<activation>
<os>
<family>mac</family>
</os>
</activation>
...
First thing that comes to my mind would be to implement a helpful implementation of toString()
for {}org.apache.maven.api.model.Activation{
}.
NOTE: This issue is not related to concurrency/threading (no -T
option).
The bug comes from here:
Since the code already changed on master for rc2 you can immediately close this issue, but I could not find a MNG bug issue for "Duplicate key default".
Affects: 4.0.0-rc-1