[ 
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)

Reply via email to