maven-dependency-plugin
maven-dependency-plugin copied to clipboard
[MDEP-82] go-offline / resolve-plugins does not resolve all plugin dependencies
Arne Degenring opened MDEP-82 and commented
The attached pom.xml is a very simple JAR project, without any direct dependencies or plugin dependencies.
Start with an empty local repository, and run mvn dependency:go-offline on it. Some files get downloaded, but not everything that is needed for the build. If you run "mvn -o package" afterwards, you end up with the following error:
[ERROR] BUILD ERROR
[INFO] ------------------------------------------------------------------------
[INFO] The plugin 'org.apache.maven.plugins:maven-resources-plugin' does not exist or no valid version could be found
Afterwards, even "mvn package" without the "-o" parameter does not work any longer.
Affects: 2.0-alpha-4, 2.8, 2.10
Attachments:
- maven-dependency-plugin-2.3.patch (4.75 kB)
- pom.xml (407 bytes)
Issue Links:
- MNG-6169 Packaging plugin bindings version updates
Remote Links:
21 votes, 47 watchers
Brian E. Fox (imported) commented
The problem is that the project isn't injected with the plugins from the standard lifecycle. I may have to hard code the standard ones (site,clean,default) until I can figure out how to get at the list directly.
Harold Shinsato commented
Being able to go offline so all needed dependencies (including plugin dependencies) will work is something we have a requirement to do for our builds or it will be hard for us to get to use maven. Is there a workaround for this issue that would not require writing custom code?
Derek Lewis commented
This issue has been open with no comment for a long time. Is there really no fix or workaround with the problem? I'm required to package a zip of the ~/.m2/repository directory with our software, including all dependencies needed to build from behind a strict corporate firewall. This bug is causing a great deal of grief for me. Is this fixed in maven 3?
Devin Reid commented
A workaround I have found for this issue is to run a build with the property 'maven.repo.local' set to a directory in the project base directory and run a build to the install phase. One can then archive the resulting project and move it to environments that have no network access and be able to build successfully with the '-o' option.
I've tested this successfully with Maven 2.2.1 and Maven 3.0.3.
First run: mvn -Dmaven.repo.local=lib clean install
Now the following command will work just fine. mvn -Dmaven.repo.local=lib -o clean install
Derek Lewis commented
Devin, I've used a similar situation to work around the problem. However, it means having to build everything, which is time consuming, and also means that commands you haven't run (like mvn deploy) won't work, because the deploy plugin wasn't downloaded.
Paul Warren commented
Hi Folks,
Ability (or inability) to go-offline is a showstopper for us. We have very large customers who state they have to have offline development.
So naturally this was the goal I looked at first. One problem I have with it is the fact that it resolves top level dependencies only. It doesnt recursively descend through all subsequent transtive dependencies. I am new to maven but as that stands I don't see how it is adequate to actually solve the problem. But maybe I missed some fundamental concept. Anyway, I had a fiddle with the code and made is descend and resolve all transaitive dependencies and this was sufficient for my use case. I was then able to go-offline. I am going to attach the patch in case it helps others or you would like to fold it into the source.
Mark commented
This issue is even more annoying for proper two-phase deployments where packages are built on bare build systems without network access and where testing is done after the build on the target platform: it absolutely makes no sense to execute the tests just to prepare the package sources, but the tests won't have all dependencies later on when I don't execute the tests...
Try:
git clone https://github.com/cometd/cometd.git cd cometd git checkout 2.4.0 mvn -Dmaven.repo.local=/tmp/maven-repo dependency:go-offline mvn -Dmaven.repo.local=/tmp/maven-repo -o install
Michael Osipov commented
This issue has been auto closed because it has been inactive for a long period of time. If you think this issue still persists, retest your problem with the most recent version of Maven and the affected component, reopen and post your results.
Daniel Compton commented
This is still an issue. Running mvn dependency:resolve-plugins as a second step works, but shouldn't be needed.
Hervé Boutemy commented
it looks like the first coment from Brian was not understood: "The problem is that the project isn't injected with the plugins from the standard lifecycle. I may have to hard code the standard ones (site,clean,default) until I can figure out how to get at the list directly." I'll try to explain more in details.
- go-offline downloads everything that is declared in dependencies or plugins: if you did not declare anything, there is nothing to download
- but if you didn't declare anything, what is run when you launch a build? default plugins from standard lifecycle: http://maven.apache.org/ref/current/maven-core/default-bindings.html
But the plugin does not have the logic to detect these defaults (that are dependant on Maven version used) I don't know if adding these defaults is feasible, or will give expected reault
one workaround, that is in fact a best-practice: please define plugins versions in your pom (or parent), even for default plugins that get "magically" injected by core if you did not tell anything Your build will be more repeatable (you won't be hit if Maven core changes versions), and go-offline will do the expected job
Hervé Boutemy commented
I just tested the pom.xml proposed as test case:
- with Maven 3.0.5+ and maven-depdendency-plugin 2.8, plugins from standard lifecycle are downloaded
- with Maven 2.2.1, plugins from standard lifecycle are not downloaded
IIUC, Maven 3.x fixes the issue, by better detecting effective plugins (ie declared plugins + plugins from standard lifecycle) Of course, if go-offline is called with one Maven version and the build is done later with another Maven version that has other plugins versions in standard lifecycle, there will be an issue: that's where defining explicitely plugins version in your pom.xml (or parent) is a best practice to avoid relying on Maven defaults then being dependant on precise Maven version used
If nobody objects, I'll close this issue as fixed in 3 days
Daniel Abraham commented
I'm running mvn 3.5.2, and I tried the workaround above. There's two issues, one of which has its own workaround, but the other I haven't been able to work out.
First off, when explicitly depending on the standard lifecycle plugins, go-offline doesn't seem to be fetch transitive dependencies. The workaround is to list them all explicitly. For example, in addition to listing org.apache.maven.plugins:maven-compiler-plugin:3.6.1, also list what's below (in xml, just colon separated for brevity):
- org.codehaus.plexus:plexus-utils:jar:2.0.4
- org.apache.maven:maven-repository-metadata:jar:3.0
- org.codehaus.plexus:plexus-component-annotations:jar:1.6
The second problem, and one that I don't have a fix for is that org.apache.maven.plugins:maven-compiler-plugin:3.6.1 requires org.apache.maven:maven-repository-metadata:jar:3.0, but org.apache.maven.plugins:maven-resources-plugin:2.6 requires org.apache.maven:maven-repository-metadata:jar:2.0.6. Listing both versions of maven-repository-metadata gets me the 2.0.6 jar & pom, and the 3.0 pom, but no jar. If I list them together using a range I get the same behavior.
Am I missing something here? Is there a workaround? A fix? Thank you in advance.
John commented
Using Apache Maven 3.3.9, this error persists. Our build system uses a "provision" step where all dependencies are gathered (we support a lot more than Maven), and a build step in a clean environment with no internet connectivity.
starting with a clean local repository:
repository jchittum$ pwd
/Users/jchittum/.m2/repository
repository jchittum$ ls
repository jchittum$
using the following POM
<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>
<groupId>com.akamai.devprod</groupId>
<artifactId>pull-tester</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<name>test-app</name>
<url>https://dev-repos.devprod.akamai.com</url>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.8</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.spotify</groupId>
<artifactId>docker-client</artifactId>
<version>8.11.2</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.25</version>
</dependency>
</dependencies>
<properties>
<maven.compiler.source>1.6</maven.compiler.source>
<maven.compiler.target>1.6</maven.compiler.target>
</properties>
</project>
I then run go-offline, which populates a most plugins and dependencies, however, I always run into some that aren't populated. Running mvn -o install
bos-mpoxc:test-pull-app jchittum$ mvn -o install
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building test-app 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ pull-tester ---
[WARNING] The POM for org.apache.maven:maven-core:jar:2.0.6 is missing, no dependency information available
[WARNING] The POM for org.apache.maven:maven-monitor:jar:2.0.6 is missing, no dependency information available
[WARNING] The POM for org.codehaus.plexus:plexus-utils:jar:2.0.5 is missing, no dependency information available
[WARNING] The POM for org.apache.maven.shared:maven-filtering:jar:1.1 is missing, no dependency information available
[WARNING] The POM for org.codehaus.plexus:plexus-interpolation:jar:1.13 is missing, no dependency information available
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0.525 s
[INFO] Finished at: 2018-05-08T07:52:34-05:00
[INFO] Final Memory: 9M/309M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:2.6:resources (default-resources) on project pull-tester: Execution default-resources of goal org.apache.maven.plugins:maven-resources-plugin:2.6:resources failed: Plugin org.apache.maven.plugins:maven-resources-plugin:2.6 or one of its dependencies could not be resolved: The following artifacts could not be resolved: org.apache.maven:maven-profile:jar:2.0.6, org.apache.maven:maven-repository-metadata:jar:2.0.6, org.apache.maven:maven-plugin-registry:jar:2.0.6, classworlds:classworlds:jar:1.1-alpha-2: Cannot access central (https://repos.akamai.com/public-maven-repos) in offline mode and the artifact org.apache.maven:maven-profile:jar:2.0.6 has not been downloaded from it before. -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[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/PluginResolutionException
I can tell at least the following plugins are not downloaded with a go-offline:
- surefire (and transitive dependencies)
- jar (and its transitive dependencies
- compiler (and its transitive dependencies)
- resources (and its transitive dependencies)
It appears the original bug stating that core plugins for lifecycle phases are not populated. As is, since our build environment is docker based, I'll be setting up a script to manually pull all Apache maintained plugins and populating the initial build environment.
How about this proposal?
The Maven Dependency Plugin, when using go-offline, should do a greedy pull, and populate all Maven core plugins and their transitive dependencies.
John commented
To narrow this down to versions.
maven = 3.5.2
mvn dependency:go-offline
mvn -o clean install
Fails with missing poms for transitive dependencies of plugins:
--- jacoco-maven-plugin:0.8.0:prepare-agent (default-prepare-agent) @ my-lib ---
[WARNING] The POM for junit:junit:jar:4.8.2 is missing, no dependency information available
[WARNING] The POM for org.apache.maven.reporting:maven-reporting-impl:jar:2.1 is missing, no dependency information available
[WARNING] The POM for org.jacoco:org.jacoco.agent:jar:runtime:0.8.0 is missing, no dependency information available
[WARNING] The POM for org.jacoco:org.jacoco.core:jar:0.8.0 is missing, no dependency information available
[WARNING] The POM for org.jacoco:org.jacoco.report:jar:0.8.0 is missing, no dependency information available
- junit is relied upon somewhere in this build without being explicitly listed anywhere.
- the org.jacoco:org.jacoco.* dependencies are listed explicitly by org.jacoco, however, when resolved, they only pulled the .jar, not the .pom. This led to the later failures.
But I noticed it was defaulting to using a slightly older maven-dependency-plugin, 2.8. So i tried:
mvn org.apache.maven.plugins:maven-dependency-plugin:3.1.0:go-offline
Forcing that version resolved all transitive plugin dependencies properly! However, I ran into further missing dependencies, specifically with surefire. After explicitly adding those, I was able to build successfully.
So, there are several layers of dependency resolutions not occurring, depending on the version of the plugin being used, and how other plugins are being implemented. Definitely no easy answer here. Our company is committed to getting this to work at the moment, so I'll probably continue to be bothersome
Hervé Boutemy commented
TL;DR = Works with Maven 3.1.0+ and maven-dependency-plugin 3.0.0+, fails with any Maven version or maven-dependency-plugin before If you have any issue, please precise which Maven and maven-dependency-plugin versions you are using
Then detailed tests: tested with attached pom.xml (dummy) and following settings.xml to provide a clean local repository on each test (and locale repository manager for efficiency):
<settings>
<localRepository>repo</localRepository>
<!--mirrors>
<mirror>
<id>central</id>
<name>My Repository Manager</name>
<url>http://localhost:8080/...</url>
<mirrorOf>central</mirrorOf>
</mirror>
</mirrors-->
</settings>
then define explicitiely the maven-dependency-plugin version used for go-offline to not depend on default version defined inside Maven:
mvn -s settings.xml org.apache.maven.plugins:maven-dependency-plugin:2.8:go-offline
And finally check if the build in offline mode works:
mvn -V -s settings.xml verify -o
Result: build works with maven-dependency-plugin starting with version 3.0.0 with recent Maven versions
On one line:
\rm -rf repo ; mvn -s settings.xml org.apache.maven.plugins:maven-dependency-plugin:3.0.0:go-offline ; mvn -V -s settings.xml verify -o
works like a charm (tested with success also with 3.0.1, 3.0.2, 3.1.0) The same test fails with 2.10 or anything before fails. Tested with success with Maven 3.5.3, 3.3.9, 3.2.5, 3.1.0 But fails with Maven 3.0.5
Bob van der Linden commented
This is not yet fixed for me. Consider the following: https://gist.github.com/bobvanderlinden/960203d38475c4e0ffe861b049bbc107
It fails with the following error:
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-install-plugin:2.5.2:install (default-install) on project main: Execution default-install of goal org.apache.maven.plugins:maven-install-plugin:2.5.2:install failed: Plugin org.apache.maven.plugins:maven-install-plugin:2.5.2 or one of its dependencies could not be resolved: Cannot access central (https://repo.maven.apache.org/maven2) in offline mode and the artifact org.codehaus.plexus:plexus-container-default:jar:1.6 has not been downloaded from it before. -> [Help 1]
Antoine Morvan commented
Hi,
I'm experiencing issues also, with plugin version 3.1.1. I uploaded a small example project to reproduce: https://github.com/antoine-morvan/resolve_plugin_issue
Best.
Sylwester Lachiewicz commented
For Antoine Morvan sample project issue is with org.apache.maven.plugin.internal.PluginDependencyResolutionListener#isWagonProvider where old 2.x Maven's Wagon was excluded from dependences. I hope after org.jacoco:jacoco-maven-plugin will be updated to 3+ API it can be solved.
Sylwester Lachiewicz commented
Problem with jacoco-maven-plugin has been resolved with migration to plugin-api 3.0 - version 0.8.3 can be used in "offline mode"
For future reference: artifacts from https://github.com/apache/maven/blob/master/maven-core/src/main/resources/META-INF/maven/extension.xml#L128 list can generate problems
Ivo míd commented
Workaround could be to use https://github.com/qaware/go-offline-maven-plugin (as described here https://stackoverflow.com/a/58767388/535560)
Marcello de Sales commented
Worked by Adding Latest Maven Libraries
- Following the update of the maven dependencies plugin following Hervé Boutemy's suggestions: version 3.1.1
- Also had to add the surefire test platform
@@ -23,6 +23,9 @@
<junit-jupiter.version>5.5.2</junit-jupiter.version>
<common-io.version>2.6</common-io.version>
<jacoco-maven-plugin.version>0.8.4</jacoco-maven-plugin.version>
+ <!-- https://issues.apache.org/jira/browse/MDEP-82 -->
+ <maven-dependency-plugin.version>3.1.1</maven-dependency-plugin.version>
+ <surefire-junit-platform.version>2.22.2</surefire-junit-platform.version>
<maven-release-plugin.version>2.5.3</maven-release-plugin.version>
<maven-deploy-plugin.version>2.8.2</maven-deploy-plugin.version>
<maven-surefire-report-plugin.version>2.22.2</maven-surefire-report-plugin.version>
...
...
<build>
<plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-dependency-plugin</artifactId>
+ <version>${maven-dependency-plugin.version}</version>
+ </plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
@@ -135,6 +143,11 @@
<target>${java.version}</target>
</configuration>
</plugin>
+ <plugin>
+ <groupId>org.apache.maven.surefire</groupId>
+ <artifactId>surefire-junit-platform</artifactId>
+ <version>${surefire-junit-platform.version}</version>
+ </plugin>
All tasks with --offline worked
- In a Dockerized world, you want to download the dependencies first
- Then execute each individual Multi-stage build depending on each of the docker images
- Making sure the resolve plugins is also used
FROM maven:3.6.3-jdk-8 AS dependencies-downloaded
...
...
COPY app/pom.xml /usr/src/app/pom.xml
COPY app/settings.xml /usr/src/app/settings.xml
RUN mvn -f /usr/src/pom.xml -s /usr/src/settings.xml dependency:resolve-plugins dependency:go-offline
- Then Each individual image for each individual step... Starting with compile
FROM dependencies-downloaded AS compile
COPY app /usr/src/app
RUN mvn -f /usr/src/pom.xml -s /usr/src/settings.xml compile --offline
- Then tests
...
...
RUN mvn -f /usr/src/pom.xml -s /usr/src/settings.xml test --offline
- Then package, skipping the tests previously ran
...
...
RUN mvn -f /usr/src/pom.xml -s /usr/src/settings.xml package -Dmaven.test.skip=true --offline
Archimedes Trajano commented
I have an MVCE that shows that it does not work with maven-dependency-plugin 3.8.2 https://github.com/trajano/spring-beanpostproc-mvce
Chris Warburton commented
I got 3.2.0 to work, but I also hit https://issues.apache.org/jira/browse/MNG-6965 which causes an implicit dependency on plexus-utils:1.1, which isn't picked up by go-offline. I worked around it by adding an explicit dependency on plexus-utils:3.1.0 (in my case I added this to the dependencies of maven-surefire-plugin, since that was the failing step in my builds)
Feliks Khantsis commented
Hey Marcello de Sales if you are still around three years later, what is in settings.xml? I am working on Docker builds, and even the Docker manve says to do it like so, however I am failing on all dependency-plugin versions. Specifically, I am using spring bom, and it's not properly resolving the correct version, downloading four versions of spring jars, except the one I need.
Gili commented
Is this issue fixed now that https://issues.apache.org/jira/browse/MNG-6965 is fixed?
Bas van Erp commented
Gili definitely not. Maven 3.9.2 with maven-dependency-plugin:3.6.0 and its driving me nuts.
Artem Yak commented
Did not work with
- Maven 3.9.6
- maven-dependency-plugin:3.6.1
- maven-surefire-plugin:3.2.5
- testng:7.9.0
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:3.2.5:test (default-test) on project payments-qa: Execution default-test of goal org.apache.maven.plugins:maven-surefire-plugin:3.2.5:test failed: A required class was missing while executing org.apache.maven.plugins:maven-surefire-plugin:3.2.5:test: org/apache/maven/surefire/booter/KeyValueSource
-----------------------------------------------------
realm = plugin>org.apache.maven.plugins:maven-surefire-plugin:3.2.5
strategy = org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy
urls[0] = file:/root/.m2/repository/org/apache/maven/plugins/maven-surefire-plugin/3.2.5/maven-surefire-plugin-3.2.5.jar
urls[1] = file:/root/.m2/repository/org/apache/maven/surefire/maven-surefire-common/3.2.5/maven-surefire-common-3.2.5.jar
Number of foreign imports: 1
import: Entry[import from realm ClassRealm[maven.api, parent: null]]----------------------------------------------------- at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2(MojoExecutor.java:333) ~[maven-core-3.9.6.jar:3.9.6]
at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute(MojoExecutor.java:316) ~[maven-core-3.9.6.jar:3.9.6]
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:212) ~[maven-core-3.9.6.jar:3.9.6]
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:174) ~[maven-core-3.9.6.jar:3.9.6]
at org.apache.maven.lifecycle.internal.MojoExecutor.access$000(MojoExecutor.java:75) ~[maven-core-3.9.6.jar:3.9.6]
at org.apache.maven.lifecycle.internal.MojoExecutor$1.run(MojoExecutor.java:162) ~[maven-core-3.9.6.jar:3.9.6]
at org.apache.maven.plugin.DefaultMojosExecutionStrategy.execute(DefaultMojosExecutionStrategy.java:39) ~[maven-core-3.9.6.jar:3.9.6]
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:159) ~[maven-core-3.9.6.jar:3.9.6]
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:105) ~[maven-core-3.9.6.jar:3.9.6]
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:73) ~[maven-core-3.9.6.jar:3.9.6]
at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:53) ~[maven-core-3.9.6.jar:3.9.6]
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:118) ~[maven-core-3.9.6.jar:3.9.6]
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:261) ~[maven-core-3.9.6.jar:3.9.6]
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:173) ~[maven-core-3.9.6.jar:3.9.6]
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:101) ~[maven-core-3.9.6.jar:3.9.6]
at org.apache.maven.cli.MavenCli.execute(MavenCli.java:906) [maven-embedder-3.9.6.jar:3.9.6]
at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:283) [maven-embedder-3.9.6.jar:3.9.6]
at org.apache.maven.cli.MavenCli.main(MavenCli.java:206) [maven-embedder-3.9.6.jar:3.9.6]
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[?:?]
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
at java.base/java.lang.reflect.Method.invoke(Method.java:568) ~[?:?]
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:283) [plexus-classworlds-2.7.0.jar:?]
at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:226) [plexus-classworlds-2.7.0.jar:?]
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:407) [plexus-classworlds-2.7.0.jar:?]
at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:348) [plexus-classworlds-2.7.0.jar:?]
Caused by: org.apache.maven.plugin.PluginExecutionException: Execution default-test of goal org.apache.maven.plugins:maven-surefire-plugin:3.2.5:test failed: A required class was missing while executing org.apache.maven.plugins:maven-surefire-plugin:3.2.5:test: org/apache/maven/surefire/booter/KeyValueSource
-----------------------------------------------------
realm = plugin>org.apache.maven.plugins:maven-surefire-plugin:3.2.5
strategy = org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy
urls[0] = file:/root/.m2/repository/org/apache/maven/plugins/maven-surefire-plugin/3.2.5/maven-surefire-plugin-3.2.5.jar
urls[1] = file:/root/.m2/repository/org/apache/maven/surefire/maven-surefire-common/3.2.5/maven-surefire-common-3.2.5.jar
Number of foreign imports: 1
import: Entry[import from realm ClassRealm[maven.api, parent: null]]----------------------------------------------------- at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:152) ~[maven-core-3.9.6.jar:3.9.6]
at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2(MojoExecutor.java:328) ~[maven-core-3.9.6.jar:3.9.6]
... 25 more
Caused by: org.apache.maven.plugin.PluginContainerException: A required class was missing while executing org.apache.maven.plugins:maven-surefire-plugin:3.2.5:test: org/apache/maven/surefire/booter/KeyValueSource
-----------------------------------------------------
realm = plugin>org.apache.maven.plugins:maven-surefire-plugin:3.2.5
strategy = org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy
urls[0] = file:/root/.m2/repository/org/apache/maven/plugins/maven-surefire-plugin/3.2.5/maven-surefire-plugin-3.2.5.jar
urls[1] = file:/root/.m2/repository/org/apache/maven/surefire/maven-surefire-common/3.2.5/maven-surefire-common-3.2.5.jar
Number of foreign imports: 1
import: Entry[import from realm ClassRealm[maven.api, parent: null]]----------------------------------------------------- at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:150) ~[maven-core-3.9.6.jar:3.9.6]
at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2(MojoExecutor.java:328) ~[maven-core-3.9.6.jar:3.9.6]
... 25 more
Caused by: java.lang.NoClassDefFoundError: org/apache/maven/surefire/booter/KeyValueSource
at java.base/java.lang.ClassLoader.defineClass1(Native Method) ~[?:?]
at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1017) ~[?:?]
at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:150) ~[?:?]
at java.base/java.net.URLClassLoader.defineClass(URLClassLoader.java:524) ~[?:?]
at java.base/java.net.URLClassLoader$1.run(URLClassLoader.java:427) ~[?:?]
at java.base/java.net.URLClassLoader$1.run(URLClassLoader.java:421) ~[?:?]
at java.base/java.security.AccessController.doPrivileged(AccessController.java:712) ~[?:?]
at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:420) ~[?:?]
at org.codehaus.plexus.classworlds.realm.ClassRealm.findClassInternal(ClassRealm.java:313) ~[plexus-classworlds-2.7.0.jar:?]
at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClassFromSelf(ClassRealm.java:432) ~[plexus-classworlds-2.7.0.jar:?]
at org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy.loadClass(SelfFirstStrategy.java:42) ~[plexus-classworlds-2.7.0.jar:?]
at org.codehaus.plexus.classworlds.realm.ClassRealm.unsynchronizedLoadClass(ClassRealm.java:271) ~[plexus-classworlds-2.7.0.jar:?]
at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:247) ~[plexus-classworlds-2.7.0.jar:?]
at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:239) ~[plexus-classworlds-2.7.0.jar:?]
at java.base/java.lang.Class.getDeclaredConstructors0(Native Method) ~[?:?]
at java.base/java.lang.Class.privateGetDeclaredConstructors(Class.java:3373) ~[?:?]
at java.base/java.lang.Class.getDeclaredConstructors(Class.java:2555) ~[?:?]
at com.google.inject.spi.InjectionPoint.forConstructorOf(InjectionPoint.java:299) ~[guice-5.1.0.jar:?]
at com.google.inject.internal.ConstructorBindingImpl.create(ConstructorBindingImpl.java:121) ~[guice-5.1.0.jar:?]
at com.google.inject.internal.InjectorImpl.createUninitializedBinding(InjectorImpl.java:715) ~[guice-5.1.0.jar:?]
at com.google.inject.internal.InjectorImpl.createJustInTimeBinding(InjectorImpl.java:941) ~[guice-5.1.0.jar:?]
at com.google.inject.internal.InjectorImpl.createJustInTimeBindingRecursive(InjectorImpl.java:863) ~[guice-5.1.0.jar:?]
at com.google.inject.internal.InjectorImpl.getJustInTimeBinding(InjectorImpl.java:300) ~[guice-5.1.0.jar:?]
at com.google.inject.internal.InjectorImpl.getBindingOrThrow(InjectorImpl.java:223) ~[guice-5.1.0.jar:?]
at com.google.inject.internal.InjectorImpl.getProviderOrThrow(InjectorImpl.java:1093) ~[guice-5.1.0.jar:?]
at com.google.inject.internal.InjectorImpl.getProvider(InjectorImpl.java:1122) ~[guice-5.1.0.jar:?]
at com.google.inject.internal.InjectorImpl.getProvider(InjectorImpl.java:1087) ~[guice-5.1.0.jar:?]
at com.google.inject.internal.InjectorImpl.getInstance(InjectorImpl.java:1139) ~[guice-5.1.0.jar:?]
at org.eclipse.sisu.space.AbstractDeferredClass.get(AbstractDeferredClass.java:48) ~[org.eclipse.sisu.inject-0.9.0.M2.jar:?]
at com.google.inject.internal.ProviderInternalFactory.provision(ProviderInternalFactory.java:86) ~[guice-5.1.0.jar:?]
at com.google.inject.internal.InternalFactoryToInitializableAdapter.provision(InternalFactoryToInitializableAdapter.java:57) ~[guice-5.1.0.jar:?]
at com.google.inject.internal.ProviderInternalFactory$1.call(ProviderInternalFactory.java:67) ~[guice-5.1.0.jar:?]
at com.google.inject.internal.ProvisionListenerStackCallback$Provision.provision(ProvisionListenerStackCallback.java:109) ~[guice-5.1.0.jar:?]
at com.google.inject.internal.ProvisionListenerStackCallback$Provision.provision(ProvisionListenerStackCallback.java:124) ~[guice-5.1.0.jar:?]
at com.google.inject.internal.ProvisionListenerStackCallback.provision(ProvisionListenerStackCallback.java:66) ~[guice-5.1.0.jar:?]
at com.google.inject.internal.ProviderInternalFactory.circularGet(ProviderInternalFactory.java:62) ~[guice-5.1.0.jar:?]
at com.google.inject.internal.InternalFactoryToInitializableAdapter.get(InternalFactoryToInitializableAdapter.java:47) ~[guice-5.1.0.jar:?]
at com.google.inject.internal.InjectorImpl$1.get(InjectorImpl.java:1101) ~[guice-5.1.0.jar:?]
at org.eclipse.sisu.inject.Guice4$2.get(Guice4.java:233) ~[org.eclipse.sisu.inject-0.9.0.M2.jar:?]
at org.eclipse.sisu.inject.LazyBeanEntry.getValue(LazyBeanEntry.java:81) ~[org.eclipse.sisu.inject-0.9.0.M2.jar:?]
at org.eclipse.sisu.plexus.LazyPlexusBean.getValue(LazyPlexusBean.java:51) ~[org.eclipse.sisu.plexus-0.9.0.M2.jar:?]
at org.codehaus.plexus.DefaultPlexusContainer.lookup(DefaultPlexusContainer.java:264) ~[org.eclipse.sisu.plexus-0.9.0.M2.jar:?]
at org.codehaus.plexus.DefaultPlexusContainer.lookup(DefaultPlexusContainer.java:256) ~[org.eclipse.sisu.plexus-0.9.0.M2.jar:?]
at org.apache.maven.plugin.internal.DefaultMavenPluginManager.getConfiguredMojo(DefaultMavenPluginManager.java:491) ~[maven-core-3.9.6.jar:3.9.6]
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:114) ~[maven-core-3.9.6.jar:3.9.6]
at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2(MojoExecutor.java:328) ~[maven-core-3.9.6.jar:3.9.6]
... 25 more
Caused by: java.lang.ClassNotFoundException: org.apache.maven.surefire.booter.KeyValueSource
at org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy.loadClass(SelfFirstStrategy.java:50) ~[plexus-classworlds-2.7.0.jar:?]
at org.codehaus.plexus.classworlds.realm.ClassRealm.unsynchronizedLoadClass(ClassRealm.java:271) ~[plexus-classworlds-2.7.0.jar:?]
at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:247) ~[plexus-classworlds-2.7.0.jar:?]
at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:239) ~[plexus-classworlds-2.7.0.jar:?]
at java.base/java.lang.ClassLoader.defineClass1(Native Method) ~[?:?]
at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1017) ~[?:?]
at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:150) ~[?:?]
at java.base/java.net.URLClassLoader.defineClass(URLClassLoader.java:524) ~[?:?]
at java.base/java.net.URLClassLoader$1.run(URLClassLoader.java:427) ~[?:?]
at java.base/java.net.URLClassLoader$1.run(URLClassLoader.java:421) ~[?:?]
at java.base/java.security.AccessController.doPrivileged(AccessController.java:712) ~[?:?]
at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:420) ~[?:?]
at org.codehaus.plexus.classworlds.realm.ClassRealm.findClassInternal(ClassRealm.java:313) ~[plexus-classworlds-2.7.0.jar:?]
at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClassFromSelf(ClassRealm.java:432) ~[plexus-classworlds-2.7.0.jar:?]
at org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy.loadClass(SelfFirstStrategy.java:42) ~[plexus-classworlds-2.7.0.jar:?]
at org.codehaus.plexus.classworlds.realm.ClassRealm.unsynchronizedLoadClass(ClassRealm.java:271) ~[plexus-classworlds-2.7.0.jar:?]
at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:247) ~[plexus-classworlds-2.7.0.jar:?]
at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:239) ~[plexus-classworlds-2.7.0.jar:?]
at java.base/java.lang.Class.getDeclaredConstructors0(Native Method) ~[?:?]
at java.base/java.lang.Class.privateGetDeclaredConstructors(Class.java:3373) ~[?:?]
at java.base/java.lang.Class.getDeclaredConstructors(Class.java:2555) ~[?:?]
at com.google.inject.spi.InjectionPoint.forConstructorOf(InjectionPoint.java:299) ~[guice-5.1.0.jar:?]
at com.google.inject.internal.ConstructorBindingImpl.create(ConstructorBindingImpl.java:121) ~[guice-5.1.0.jar:?]
at com.google.inject.internal.InjectorImpl.createUninitializedBinding(InjectorImpl.java:715) ~[guice-5.1.0.jar:?]
at com.google.inject.internal.InjectorImpl.createJustInTimeBinding(InjectorImpl.java:941) ~[guice-5.1.0.jar:?]
at com.google.inject.internal.InjectorImpl.createJustInTimeBindingRecursive(InjectorImpl.java:863) ~[guice-5.1.0.jar:?]
at com.google.inject.internal.InjectorImpl.getJustInTimeBinding(InjectorImpl.java:300) ~[guice-5.1.0.jar:?]
at com.google.inject.internal.InjectorImpl.getBindingOrThrow(InjectorImpl.java:223) ~[guice-5.1.0.jar:?]
at com.google.inject.internal.InjectorImpl.getProviderOrThrow(InjectorImpl.java:1093) ~[guice-5.1.0.jar:?]
at com.google.inject.internal.InjectorImpl.getProvider(InjectorImpl.java:1122) ~[guice-5.1.0.jar:?]
at com.google.inject.internal.InjectorImpl.getProvider(InjectorImpl.java:1087) ~[guice-5.1.0.jar:?]
at com.google.inject.internal.InjectorImpl.getInstance(InjectorImpl.java:1139) ~[guice-5.1.0.jar:?]
at org.eclipse.sisu.space.AbstractDeferredClass.get(AbstractDeferredClass.java:48) ~[org.eclipse.sisu.inject-0.9.0.M2.jar:?]
at com.google.inject.internal.ProviderInternalFactory.provision(ProviderInternalFactory.java:86) ~[guice-5.1.0.jar:?]
at com.google.inject.internal.InternalFactoryToInitializableAdapter.provision(InternalFactoryToInitializableAdapter.java:57) ~[guice-5.1.0.jar:?]
at com.google.inject.internal.ProviderInternalFactory$1.call(ProviderInternalFactory.java:67) ~[guice-5.1.0.jar:?]
at com.google.inject.internal.ProvisionListenerStackCallback$Provision.provision(ProvisionListenerStackCallback.java:109) ~[guice-5.1.0.jar:?]
at com.google.inject.internal.ProvisionListenerStackCallback$Provision.provision(ProvisionListenerStackCallback.java:124) ~[guice-5.1.0.jar:?]
at com.google.inject.internal.ProvisionListenerStackCallback.provision(ProvisionListenerStackCallback.java:66) ~[guice-5.1.0.jar:?]
at com.google.inject.internal.ProviderInternalFactory.circularGet(ProviderInternalFactory.java:62) ~[guice-5.1.0.jar:?]
at com.google.inject.internal.InternalFactoryToInitializableAdapter.get(InternalFactoryToInitializableAdapter.java:47) ~[guice-5.1.0.jar:?]
at com.google.inject.internal.InjectorImpl$1.get(InjectorImpl.java:1101) ~[guice-5.1.0.jar:?]
at org.eclipse.sisu.inject.Guice4$2.get(Guice4.java:233) ~[org.eclipse.sisu.inject-0.9.0.M2.jar:?]
at org.eclipse.sisu.inject.LazyBeanEntry.getValue(LazyBeanEntry.java:81) ~[org.eclipse.sisu.inject-0.9.0.M2.jar:?]
at org.eclipse.sisu.plexus.LazyPlexusBean.getValue(LazyPlexusBean.java:51) ~[org.eclipse.sisu.plexus-0.9.0.M2.jar:?]
at org.codehaus.plexus.DefaultPlexusContainer.lookup(DefaultPlexusContainer.java:264) ~[org.eclipse.sisu.plexus-0.9.0.M2.jar:?]
at org.codehaus.plexus.DefaultPlexusContainer.lookup(DefaultPlexusContainer.java:256) ~[org.eclipse.sisu.plexus-0.9.0.M2.jar:?]
at org.apache.maven.plugin.internal.DefaultMavenPluginManager.getConfiguredMojo(DefaultMavenPluginManager.java:491) ~[maven-core-3.9.6.jar:3.9.6]
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:114) ~[maven-core-3.9.6.jar:3.9.6]
at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2(MojoExecutor.java:328) ~[maven-core-3.9.6.jar:3.9.6]
... 25 more