2012-07-06 17 views
6

. Devo usare surefire v2.12, ma ottengo la traccia dello stack allegato ogni volta che eseguo quella versione. Se corro v2.10 non ottengo l'errore. Ho bisogno di questa versione in modo da poter annotare le mie classi di test con @Category e etichettarle come UnitTests o IntegrationTests. Ecco il mio comando: mvn prova -Dsurefire.version = 2.12 -XEccezione con il plugin surefire con fase di test in

 
    [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.LifecycleStarter.execute(LifecycleStarter.java:161) 
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:320) 
    at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156) 
    at org.apache.maven.cli.MavenCli.execute(MavenCli.java:537) 
    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.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 
    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.MojoExecutor.execute(MojoExecutor.java: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.invokeGetter(ReflectionUtils.java:69) 
    at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.getSuites(ProviderFactory.java:148) 
    at org.apache.maven.plugin.surefire.booterclient.ForkStarter.getSuitesIterator(ForkStarter.java:317) 
    at org.apache.maven.plugin.surefire.booterclient.ForkStarter.runSuitesForkPerTestSet(ForkStarter.java:149) 
    at org.apache.maven.plugin.surefire.booterclient.ForkStarter.run(ForkStarter.java:118) 
    at org.apache.maven.plugin.surefire.AbstractSurefireMojo.executeProvider(AbstractSurefireMojo.java:199) 
    at org.apache.maven.plugin.surefire.AbstractSurefireMojo.executeAllProviders(AbstractSurefireMojo.java:176) 
    at org.apache.maven.plugin.surefire.AbstractSurefireMojo.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 
    Caused by: java.lang.reflect.InvocationTargetException 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 
    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.surefire.junitcore.JUnitCoreProvider.getSuitesAsList(JUnitCoreProvider.java:169) 
    at org.apache.maven.surefire.junitcore.JUnitCoreProvider.getSuites(JUnitCoreProvider.java:102) 
    ... 35 more 
    Caused by: java.lang.RuntimeException: Unexpected ClassNotFoundException looking up class 'org.apache.maven.cli.MavenCli' 
    ... 12 more 

    (deleted lines here) 

mio 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> 

Inoltre, ero in grado di farlo in un progetto diverso che ho creato da rottame. Ma in questo caso come puoi vedere sto sovrascrivendo la versione del plugin surefire.

Qualche idea?

Grazie

+0

Quale versione di Maven stai usando? – gkamal

+0

Se si hanno test di integrazione, maven-surefire-plugin è il modo sbagliato. Per il test di integrazione utilizzare invece il plugin maven-failsafe. – khmarbaise

+0

@gkamal I an usando Maven 3.0.4 – bclarance

risposta

1

Perché non mettere le versioni in questo pom, causa questo pom è controllato da voi e chiunque altro mai utilizzerà il vostro progetto sarà stupito che non funziona, perché ha mancato di dare le proprietà sulla riga di comando. BTW: Hai controllato l'output tramite mvn -X -Dsurefire.version = 2,12, ecc. Penso che otterrai lo stesso messaggio di errore.

Ho ricontrollato e se si definisce la versione in che modo il vostro progetto non è più corretta se qualcuno perdere le opzioni (-D ...) sulla riga di comando si ottengono le cose in questo modo:

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 altre parole è una pessima idea definire le versioni del plugin (o le sue dipendenze) tramite le opzioni sulla riga di comando. Ti consiglio semplicemente di definire la versione di tutto ciò che ti serve nel tuo pom e di fare un uso corretto dei test di unità e integrazione tramite surefire e/o plugin failsafe. Questo risolverà i tuoi problemi.

+0

Non potrei essere più d'accordo, e quel genitore verrà aggiornato alla fine. Il mio problema è che il genitore ha molte altre persone a carico quindi devo verificare che funzioni prima di poter applicare quella modifica/aggiornamento in modo permanente. Sì, l'ho eseguito con l'opzione -X, ma non vedo come mi stia aiutando. Se sai cosa cercare, ti preghiamo di avvisare. – bclarance

+0

Basta inserire il numero di versione nel pom e testarlo in questo modo. Inoltre, l'uso di versioni di plugin e/o dipendenze su linea di comando non funziona.Ci sarebbero voluti 50 secondi per cambiare quel pom e testato con le versioni che hai dato. Puoi commentare nel pom perché hai deciso di usare una versione diversa di maven-surefire-pugin invece che ereditata. – khmarbaise

+0

Modificato il progetto pom con la versione e ottenendo ancora un'eccezione; mvn clean test -e -X. Ecco alcuni output per verificare che la modifica abbia avuto effetto: [DEBUG] org.apache.maven.surefire: surefire-api: jar: 2.12: compila (selezionato per compilare) qualche altra idea? – bclarance

Problemi correlati