Exception with surefire plugin with test phase in maven

I need to use surefire v2.12, but I get an attached stack trace every time I run this version. If I run v2.10, I will not get an error. I need this version, so I can annotate my test classes with @Category and call them as UnitTests or IntegrationTests. Here is my command: mvn test -Dsurefire.version = 2.12 -X

     [ERROR] Failed to execute goal org.apache.maven.plugins: maven-surefire-plugin: 2.12: test (default-test) on project PROJECT: Execution default-test of goal org.apache.maven.plugins: maven-surefire -plugin: 2.12: test failed: java.lang.reflect.InvocationTargetException;  nested exception is java.lang.reflect.InvocationTargetException: null: ExceptionInInitializerError: Unexpected ClassNotFoundException looking up class 'org.apache.maven.cli.MavenCli' -> [Help 1] org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins: maven-surefire-plugin: 2.12: test (default-test) on project ASPEN: Execution default-test of goal org.apache.maven.plugins: maven-surefire-plugin: 2.12: test failed: java.lang.reflect.InvocationTargetException;  nested exception is java.lang.reflect.InvocationTargetException: null at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:225) at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor. java: 153) at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:145) at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:84) at org.apache .maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:59) at org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild (LifecycleStarter.java:183) at org.apache.maven.lifecycle.internal.Life .execute (LifecycleStarter.java:161) at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.javahaps20) at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:156) at org.apache.maven. cli.MavenCli.execute (MavenCli.java//37) at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:196) at org.apache.maven.cli.  MavenCli.main (MavenCli.java:141) at sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodetchPa 25) at java.lang.reflect.Method.invoke (Method.java►97) at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:290) at org.codehaus.plexus.classworlds.launcher .Launcher.launch (Launcher.java:230) at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:409) at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java : 352) Caused by: org.apache.maven.plugin.PluginExecutionException: Execution default-test of goal org.apache.maven.plugins: maven-surefire-plugin: 2.12: test failed: java.lang.reflect.InvocationTargetException;  nested exception is java.lang.reflect.InvocationTargetException: null at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:110) at org.apache.maven.lifecycle.internal.MojoExecutoravaexecutor 209) ... 19 more Caused by: org.apache.maven.surefire.util.SurefireReflectionException: java.lang.reflect.InvocationTargetException;  nested exception is java.lang.reflect.InvocationTargetException: null at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray (ReflectionUtils.java:197) at org.apache.maven.surefire.util.ReflectionUtils.invokeGet java: 69) at org.apache.maven.surefire.booter.ProviderFactory $ ProviderProxy.getSuites (ProviderFactory.java:148) at org.apache.maven.plugin.surefire.booterclient.ForkStarter.getSuitesIterator (ForkStarter.java1717) at org.apache.maven.plugin.surefire.booterclient.ForkStarter.runSuitesForkPerTestSet (ForkStarter.java:149) at org.apache.maven.plugin.surefire.booterclient.ForkStarter.run (ForkStarter.java:118) org .maven.plugin.surefire.AbstractSurefireMojo.executeProvider (AbstractSurefireMojo.java:199) at org.apache.maven.plugin.surefire.AbstractSurefireMojo.executeAllProviders (AbstractSurefireMojo.javaaplu.m .executeAfterPreconditionsChecked (AbstractSurefireMojo.java:135) at org.apache.  maven.plugin.surefire.AbstractSurefireMojo.execute (AbstractSurefireMojo.java:98) at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:101) ... 20 more Causvreget: jare at sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImle.rejlectrefre.revl.lef.ref.livefrell.reflect. java.jpg .invoke (Method.javaPoint97) at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray (ReflectionUtils.java:189) ... 30 more Caused by: java.lang.ExceptionInInitializerError ... 2 more at java .lang.Class.forName0 (Native Method) at java.lang.Class.forName (Class.java:169) at org.junit.runner.Description.getTestClass (Description.java:207) at org.apache.maven.surefire .common.junit48.FilterFactory $ GroupMatcherCategoryFilter.shouldRun (FilterFactory.java:207) at org.apache.maven.sure  fire.junitcore.JUnitCoreProvider.getSuitesAsList (JUnitCoreProvider.java:169) at org.apache.maven.surefire.junitcore.JUnitCoreProvider.getSuites (JUnitCoreProvider.java:102) ... 35 more Causeang by: ClassNotFoundException looking up class 'org.apache.maven.cli.MavenCli' ... 12 more (deleted lines here) 

My pom.xml

<?xml version="1.0" encoding="UTF-8"?> <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/xsd/maven-4.0.0.xsd"> <parent> <artifactId>sample</artifactId> <groupId>sample</groupId> <version>1.0</version> </parent> <modelVersion>4.0.0</modelVersion> <artifactId>webapp</artifactId> <packaging>war</packaging> <dependencies> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>${org.slf4j-version}</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>${org.slf4j-version}</version> </dependency> <dependency> <groupId>org.mockito</groupId> <artifactId>mockito-all</artifactId> <version>1.9.0</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.10</version> </dependency> </dependencies> <reporting> <plugins> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>findbugs-maven-plugin</artifactId> <version>2.5.1</version> </plugin> </plugins> </reporting> <build> <plugins> <plugin> <artifactId>maven-surefire-plugin</artifactId> <dependencies> <dependency> <groupId>org.apache.maven.surefire</groupId> <artifactId>surefire-junit47</artifactId> <version>${surefire.version}</version> <scope>test</scope> </dependency> </dependencies> <configuration> <groups>com.webapp.api.annotation.type.${group.include}</groups> <excludedGroups>com.webapp.api.annotation.type.${group.exclude}</excludedGroups> </configuration> </plugin> </plugins> </build> </project> 

In addition, I was able to do this in another project that I created from scrap. But in this case, as you can see, I am overwriting the version of the surefire plugin.

Any ideas?

thanks

+6
source share
1 answer

Why not put the versions in this pom, because this pom is controlled by you, and anyone else who will ever use your project will be surprised that it does not work, because it missed the provision of properties on the command line. BTW: You checked the output via mvn -X -Dsurefire.version = 2.12, etc. I think you will get the same error message.

I recheck, and if you define the version this way, your project will be wrong if someone skips the options (-D ...) on the command line, you will get the following:

 INFO] Scanning for projects... [ERROR] The build could not read 1 project -> [Help 1] [ERROR] [ERROR] The project com.soebes.katas:code:1.0-SNAPSHOT (/home/katas/pom.xml) has 1 error [ERROR] 'build.plugins.plugin.version' for org.apache.maven.plugins:maven-surefire-plugin must be a valid version but is '${surefire.version}'. @ line 36, column 20 [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/ProjectBuildingException 

In other words, it is a real bad idea to determine plugin versions (or dependencies on it) using options on the command line. I just recommend that you determine the version of everything you need in your pom and use the modulation and integration tests correctly through the surefire and / or fail-safe plugin. This will solve your problems.

+1
source

Source: https://habr.com/ru/post/919908/


All Articles