[
https://issues.apache.org/jira/browse/MNG-8171?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Guillaume Nodet updated MNG-8171:
---------------------------------
Fix Version/s: 4.0.0-beta-5
> Artifact with project.rootDirectory causes Maven to expect a root directory
> in local repository
> -----------------------------------------------------------------------------------------------
>
> Key: MNG-8171
> URL: https://issues.apache.org/jira/browse/MNG-8171
> Project: Maven
> Issue Type: Bug
> Affects Versions: 4.0.0-beta-3
> Environment: Windows 11, Java 22
> Reporter: Christian Bühler
> Priority: Major
> Fix For: 4.0.0-beta-5
>
>
> When including artifact A (that uses {{project.rootDirectory}} in its POM) in
> artifact B using {{maven-dependency-plugin:copy}}, Maven tries to evaluate
> artifact A's POM inside the local repository and expects to find a root
> directory. This breaks the build.
> Artifact B must be under a different parent/in a different source repository,
> otherwise Maven resolves the artifact from {{target/project-local-repo}} and
> can find a root directory. The workaround for this is creating {{.mvn}}
> directory in the root of the local repository.
> I think this is a bug, but not sure where the root cause is and couldn't find
> an existing issue for this.
> *Artifact A:*
> {code:xml}
> <groupId>project.a</groupId>
> <artifactId>a</artifactId>
> <packaging>pom</packaging>
> <build>
> <plugins>
> <plugin>
> <!-- Some plugin that references ${project.rootDirectory} -->
> </plugin>
> </plugins>
> </build>
> {code}
> *Artifact B:*
> {code:xml}
> <groupId>project.b</groupId>
> <artifactId>b</artifactId>
> <packaging>pom</packaging>
> <build>
> <plugins>
> <plugin>
> <artifactId>maven-dependency-plugin</artifactId>
> <executions>
> <execution>
> <goals>
> <goal>copy</goal>
> </goals>
> <configuration>
> <artifactItems>
> <artifactItem>
> <artifactId>a</artifactId>
> <type>zip</type>
> </artifactItem>
> </artifactItems>
> </configuration>
> </execution>
> </executions>
> </plugin>
> </plugins>
> </build>
> {code}
> *Stacktrace:*
> {code}
> [ERROR] Failed to execute goal
> org.apache.maven.plugins:maven-dependency-plugin:3.7.1:copy (default) on
> project x: Execution default of goal
> org.apache.maven.plugins:maven-dependency-plugin:3.7.1:copy failed: Unable to
> find the root directory. Create a .mvn directory in the root directory or add
> the root="true" attribute on the root project's model to identify it. ->
> [Help 1]
> org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute
> goal org.apache.maven.plugins:maven-dependency-plugin:3.7.1:copy (default) on
> project x: Execution default of goal
> org.apache.maven.plugins:maven-dependency-plugin:3.7.1:copy failed: Unable to
> find the root directory. Create a .mvn directory in the root directory or add
> the root="true" attribute on the root project's model to identify it.
> at
> org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2(MojoExecutor.java:329)
> at
> org.apache.maven.lifecycle.internal.MojoExecutor.doExecute(MojoExecutor.java:311)
> at
> org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:213)
> at
> org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:178)
> at
> org.apache.maven.lifecycle.internal.MojoExecutor$1.run(MojoExecutor.java:167)
> at
> org.apache.maven.plugin.DefaultMojosExecutionStrategy.execute(DefaultMojosExecutionStrategy.java:39)
> at
> org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:164)
> at
> org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:107)
> at
> org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:73)
> at
> org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:60)
> at
> org.apache.maven.lifecycle.internal.DefaultLifecycleStarter.execute(DefaultLifecycleStarter.java:123)
> at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:311)
> at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:225)
> at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:149)
> at org.apache.maven.cli.MavenCli.execute(MavenCli.java:958)
> at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:288)
> at org.apache.maven.cli.MavenCli.main(MavenCli.java:205)
> at
> jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
> at java.lang.reflect.Method.invoke(Method.java:580)
> at
> org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:255)
> at
> org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:201)
> at
> org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:361)
> at
> org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:314)
> Caused by: org.apache.maven.plugin.PluginExecutionException: Execution
> default of goal org.apache.maven.plugins:maven-dependency-plugin:3.7.1:copy
> failed: Unable to find the root directory. Create a .mvn directory in the
> root directory or add the root="true" attribute on the root project's model
> to identify it.
> at
> org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:150)
> at
> org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2(MojoExecutor.java:323)
> at
> org.apache.maven.lifecycle.internal.MojoExecutor.doExecute(MojoExecutor.java:311)
> at
> org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:213)
> at
> org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:178)
> at
> org.apache.maven.lifecycle.internal.MojoExecutor$1.run(MojoExecutor.java:167)
> at
> org.apache.maven.plugin.DefaultMojosExecutionStrategy.execute(DefaultMojosExecutionStrategy.java:39)
> at
> org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:164)
> at
> org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:107)
> at
> org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:73)
> at
> org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:60)
> at
> org.apache.maven.lifecycle.internal.DefaultLifecycleStarter.execute(DefaultLifecycleStarter.java:123)
> at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:311)
> at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:225)
> at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:149)
> at org.apache.maven.cli.MavenCli.execute(MavenCli.java:958)
> at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:288)
> at org.apache.maven.cli.MavenCli.main(MavenCli.java:205)
> at
> jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
> at java.lang.reflect.Method.invoke(Method.java:580)
> at
> org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:255)
> at
> org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:201)
> at
> org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:361)
> at
> org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:314)
> Caused by: java.lang.IllegalStateException: Unable to find the root
> directory. Create a .mvn directory in the root directory or add the
> root="true" attribute on the root project's model to identify it.
> at
> org.apache.maven.api.services.model.RootLocator.findMandatoryRoot(RootLocator.java:47)
> at
> org.apache.maven.internal.impl.model.DefaultModelInterpolator$3.getValue(DefaultModelInterpolator.java:223)
> at
> org.codehaus.plexus.interpolation.PrefixedValueSourceWrapper.getValue(PrefixedValueSourceWrapper.java:120)
> at
> org.codehaus.plexus.interpolation.StringSearchInterpolator.interpolate(StringSearchInterpolator.java:166)
> at
> org.codehaus.plexus.interpolation.StringSearchInterpolator.interpolate(StringSearchInterpolator.java:105)
> at
> org.apache.maven.internal.impl.model.DefaultModelInterpolator.lambda$createInterpolator$0(DefaultModelInterpolator.java:135)
> at
> org.apache.maven.model.v4.MavenTransformer.transform(MavenTransformer.java:93)
> at
> org.apache.maven.model.v4.MavenTransformer.transform(MavenTransformer.java:2020)
> at
> org.apache.maven.model.v4.MavenTransformer.transform(MavenTransformer.java:1991)
> at
> org.apache.maven.model.v4.MavenTransformer.transform(MavenTransformer.java:2024)
> at
> org.apache.maven.model.v4.MavenTransformer.transform(MavenTransformer.java:1991)
> at
> org.apache.maven.model.v4.MavenTransformer.transform(MavenTransformer.java:2024)
> at
> org.apache.maven.model.v4.MavenTransformer.transformConfigurationContainer_Configuration(MavenTransformer.java:1445)
> at
> org.apache.maven.model.v4.MavenTransformer.transformPluginExecution(MavenTransformer.java:1518)
> at
> org.apache.maven.model.v4.MavenTransformer.transform(MavenTransformer.java:1991)
> at
> org.apache.maven.model.v4.MavenTransformer.transformPlugin_Executions(MavenTransformer.java:1488)
> at
> org.apache.maven.model.v4.MavenTransformer.transformPlugin(MavenTransformer.java:1459)
> at
> org.apache.maven.model.v4.MavenTransformer.transform(MavenTransformer.java:1991)
> at
> org.apache.maven.model.v4.MavenTransformer.transformPluginContainer_Plugins(MavenTransformer.java:390)
> at
> org.apache.maven.model.v4.MavenTransformer.transformBuild(MavenTransformer.java:493)
> at
> org.apache.maven.model.v4.MavenTransformer.transformModel_Build(MavenTransformer.java:294)
> at
> org.apache.maven.model.v4.MavenTransformer.transformModel(MavenTransformer.java:131)
> at
> org.apache.maven.model.v4.MavenTransformer.visit(MavenTransformer.java:86)
> at
> org.apache.maven.internal.impl.model.DefaultModelInterpolator.interpolateModel(DefaultModelInterpolator.java:112)
> at
> org.apache.maven.internal.impl.model.DefaultModelBuilder.interpolateModel(DefaultModelBuilder.java:869)
> at
> org.apache.maven.internal.impl.model.DefaultModelBuilder.readEffectiveModel(DefaultModelBuilder.java:402)
> at
> org.apache.maven.internal.impl.model.DefaultModelBuilder.build(DefaultModelBuilder.java:536)
> at
> org.apache.maven.internal.impl.model.DefaultModelBuilder.build(DefaultModelBuilder.java:215)
> at
> org.apache.maven.internal.impl.model.DefaultModelBuilder.build(DefaultModelBuilder.java:179)
> at
> org.apache.maven.internal.impl.resolver.DefaultArtifactDescriptorReader.loadPom(DefaultArtifactDescriptorReader.java:219)
> at
> org.apache.maven.internal.impl.resolver.DefaultArtifactDescriptorReader.readArtifactDescriptor(DefaultArtifactDescriptorReader.java:108)
> at
> org.eclipse.aether.internal.impl.DefaultRepositorySystem.readArtifactDescriptor(DefaultRepositorySystem.java:200)
> at
> org.apache.maven.shared.transfer.artifact.resolve.internal.Maven31ArtifactResolver.resolveArtifact(Maven31ArtifactResolver.java:93)
> at
> org.apache.maven.shared.transfer.artifact.resolve.internal.Maven31ArtifactResolver.resolveArtifact(Maven31ArtifactResolver.java:78)
> at
> org.apache.maven.shared.transfer.artifact.resolve.internal.DefaultArtifactResolver.resolveArtifact(DefaultArtifactResolver.java:70)
> at
> org.apache.maven.plugins.dependency.fromConfiguration.AbstractFromConfigurationMojo.getArtifact(AbstractFromConfigurationMojo.java:237)
> at
> org.apache.maven.plugins.dependency.fromConfiguration.AbstractFromConfigurationMojo.getProcessedArtifactItems(AbstractFromConfigurationMojo.java:170)
> at
> org.apache.maven.plugins.dependency.fromConfiguration.CopyMojo.doExecute(CopyMojo.java:96)
> at
> org.apache.maven.plugins.dependency.AbstractDependencyMojo.execute(AbstractDependencyMojo.java:114)
> at
> org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:144)
> at
> org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2(MojoExecutor.java:323)
> at
> org.apache.maven.lifecycle.internal.MojoExecutor.doExecute(MojoExecutor.java:311)
> at
> org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:213)
> at
> org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:178)
> at
> org.apache.maven.lifecycle.internal.MojoExecutor$1.run(MojoExecutor.java:167)
> at
> org.apache.maven.plugin.DefaultMojosExecutionStrategy.execute(DefaultMojosExecutionStrategy.java:39)
> at
> org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:164)
> at
> org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:107)
> at
> org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:73)
> at
> org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:60)
> at
> org.apache.maven.lifecycle.internal.DefaultLifecycleStarter.execute(DefaultLifecycleStarter.java:123)
> at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:311)
> at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:225)
> at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:149)
> at org.apache.maven.cli.MavenCli.execute(MavenCli.java:958)
> at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:288)
> at org.apache.maven.cli.MavenCli.main(MavenCli.java:205)
> at
> jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
> at java.lang.reflect.Method.invoke(Method.java:580)
> at
> org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:255)
> at
> org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:201)
> at
> org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:361)
> at
> org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:314)
> {code}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)