Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
3.8.7, 3.9.0, 4.0.0-alpha-4
-
None
-
Linux, MacOS, Windows
Description
Hi,
When invoking a single mojo, for example, install:install-file, outside of the project directory (no pom in the directory), then the build is failing with NullPointerException.
Steps to reproduce:
- Download maven 3.9: https://dlcdn.apache.org/maven/maven-3/3.9.0/binaries/apache-maven-3.9.0-bin.zip
- Unzip it to any directory
- Create a simple text file echo "foo" > foo.txt
- Try to install foo.txt into the local repository: ./apache-maven-3.9.0/bin/mvn install:install-file -Dfile=foo.txt -DgroupId=com.example -DartifactId=foo -Dversion=1.0.0 -Dpackaging=jar -X
Build fails with the NullPointerException:
[INFO] ------------------------------------------------------------------------ [INFO] BUILD FAILURE [INFO] ------------------------------------------------------------------------ [INFO] Total time: 0.086 s [INFO] Finished at: 2023-02-06T11:48:49+01:00 [INFO] ------------------------------------------------------------------------ [ERROR] NullPointerException java.lang.NullPointerException at org.apache.maven.lifecycle.internal.LifecycleDependencyResolver.getProjectAndSubModules (LifecycleDependencyResolver.java:102) at org.apache.maven.lifecycle.internal.LifecycleDependencyResolver.getProjects (LifecycleDependencyResolver.java:93) at org.apache.maven.lifecycle.internal.MojoExecutor.ensureDependenciesAreResolved (MojoExecutor.java:395) at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute (MojoExecutor.java:327) at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:213) at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:175) at org.apache.maven.lifecycle.internal.MojoExecutor.access$000 (MojoExecutor.java:76) at org.apache.maven.lifecycle.internal.MojoExecutor$1.run (MojoExecutor.java:163) at org.apache.maven.plugin.DefaultMojosExecutionStrategy.execute (DefaultMojosExecutionStrategy.java:39) at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:160) at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:105) at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:73) at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:53) at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:118) at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:260) at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:172) at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:100) at org.apache.maven.cli.MavenCli.execute (MavenCli.java:821) at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:270) at org.apache.maven.cli.MavenCli.main (MavenCli.java:192) at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method) at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62) at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke (Method.java:566) at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:282) at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:225) at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:406) at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347) [ERROR]
The same operation is successful when using maven 3.8.7 or earlier:
🕙 11:56:50 ➜ mvn --version Apache Maven 3.8.7 (b89d5959fcde851dcb1c8946a785a163f14e1e29) Maven home: /Users/avenderov/.sdkman/candidates/maven/current Java version: 11.0.17, vendor: Azul Systems, Inc., runtime: /Users/avenderov/.asdf/installs/java/zulu-11.60.19/zulu-11.jdk/Contents/Home Default locale: en_DE, platform encoding: UTF-8 OS name: "mac os x", version: "12.6.3", arch: "aarch64", family: "mac" ~/tmp/maven-npe 250ms 🕙 11:56:54 ➜ mvn install:install-file -Dfile=foo.txt -DgroupId=com.example -DartifactId=foo -Dversion=1.0.0 -Dpackaging=jar [INFO] Scanning for projects... [INFO] [INFO] ------------------< org.apache.maven:standalone-pom >------------------- [INFO] Building Maven Stub Project (No POM) 1 [INFO] --------------------------------[ pom ]--------------------------------- [INFO] [INFO] --- maven-install-plugin:2.4:install-file (default-cli) @ standalone-pom --- [INFO] Installing /Users/avenderov/tmp/maven-npe/foo.txt to /Users/avenderov/.m2/repository/com/example/foo/1.0.0/foo-1.0.0.jar [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 0.152 s [INFO] Finished at: 2023-02-06T11:57:12+01:00 [INFO] ------------------------------------------------------------------------
It's also possible to reproduce the issue with the development version of maven.
- Checkout maven sources.
- Build a new distribution from master: mvn -DdistributionTargetDir="$HOME/tmp/maven-npe/apache-maven-4.0.x-SNAPSHOT" clean package
- Repeat steps 3 and 4 from the instruction above. The build fails with the NullPointerException
The issue was introduced with the changes from this ticket: https://issues.apache.org/jira/browse/MNG-7672. I tried to build a distribution from this commit https://github.com/apache/maven/commit/4a3c201bfc9ae492c35e300177d950c10e788bd3 and it works as expected (the same applies for other branches, maven-3.9.x and master):
12:18:03 ➜ ./apache-maven-3.8.x-SNAPSHOT/bin/mvn --version Apache Maven 3.8.8-SNAPSHOT (4a3c201bfc9ae492c35e300177d950c10e788bd3) Maven home: /Users/avenderov/tmp/maven-npe/apache-maven-3.8.x-SNAPSHOT Java version: 11.0.17, vendor: Azul Systems, Inc., runtime: /Users/avenderov/.asdf/installs/java/zulu-11.60.19/zulu-11.jdk/Contents/Home Default locale: en_DE, platform encoding: UTF-8 OS name: "mac os x", version: "12.6.3", arch: "aarch64", family: "mac" ~/tmp/maven-npe 359ms 🕙 12:18:16 ➜ ./apache-maven-3.8.x-SNAPSHOT/bin/mvn install:install-file -Dfile=foo.txt -DgroupId=com.example -DartifactId=foo -Dversion=1.0.0 -Dpackaging=jar [INFO] Scanning for projects... [INFO] [INFO] ------------------< org.apache.maven:standalone-pom >------------------- [INFO] Building Maven Stub Project (No POM) 1 [INFO] --------------------------------[ pom ]--------------------------------- [INFO] [INFO] --- maven-install-plugin:2.4:install-file (default-cli) @ standalone-pom --- [INFO] Installing /Users/avenderov/tmp/maven-npe/foo.txt to /Users/avenderov/.m2/repository/com/example/foo/1.0.0/foo-1.0.0.jar [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 0.150 s [INFO] Finished at: 2023-02-06T12:18:32+01:00 [INFO] ------------------------------------------------------------------------