2013-04-04 6 views
6

Wie setze ich in der Pom, um Tests in Maven nicht zu kompilieren? Ich habe versucht:Wie setze ich in der Pom, um Tests nicht zu kompilieren?

<properties> 
    <skipTests>true</skipTests> 
</properties> 

aber in diesem Fall kompilieren Maven die Tests aber nicht sie laufen. Ich brauche Maven kompiliere meine Tests nicht.

+0

Darf ich fragen: WARUM? –

+0

Vielleicht können Sie ein Profil erstellen, das auf das Testquellverzeichnis verweist. Ansonsten wird auf ein leeres hingewiesen. –

+0

Ich muss sie nicht kompilieren, weil diese Tests einen Webservice aufrufen, seine Klassen analysieren und so. Da das Projekt Hudson für die kontinuierliche Integration verwendet, müssen wir diese Tests nur dann kompilieren und ausführen, wenn wir sie explizit dafür eingerichtet haben. –

Antwort

0

In meinem Fall war eine Lösung, Tests in einem Profil zu setzen (z runTests), so dass, wenn ich diese Tests ausgeführt werden soll, füge ich den Parameter -PrunTests. Danke für die Antworten.

0

Wenn Sie die surefire-plugin zum Ausführen von Tests verwenden, können Sie es konfigurieren, dass sie auf einem Namensmuster überspringen basiert:

<project> 
    [...] 
    <build> 
    <plugins> 
     <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-surefire-plugin</artifactId> 
     <version>2.14</version> 
     <configuration> 
      <includes> 
      <include>%regex[.*[Cat|Dog].*Test.*]</include> 
      </includes> 
     </configuration> 
     </plugin> 
    </plugins> 
    </build> 
    [...] 
</project> 

Dies erfordert jedoch die Tests Dateinamen zu dem gewünschten Muster entsprechen (s). Bei der Arbeit verwenden wir diesen Ansatz und lassen unsere Tests mit ..UnitTest oder ..IntegrationTest enden, so dass wir sie leicht deaktivieren können, indem Sie die Regex im entsprechenden Build-Profil ändern.

Werfen Sie einen Blick auf Apache's documentation auf dem todsicheren Plugin. Vielleicht finden Sie etwas nützlicher oder besser für Ihren Fall geeignet.

5
+2

Dies überspringt die Ausführung. Das OP möchte die Kompilierung überspringen –

+0

@ user2863942 Zitat von meinem Link: _ "Wenn Sie absolut müssen, können Sie auch die maven.test.skip -Eigenschaft verwenden, um die Tests zu kompilieren. Maven.test.skip wird von Surefire, Failsafe und das Compiler-Plugin. "_ – maba

+0

@ user2863942 Also sag mir bitte, warum hast du meine richtige Antwort abstimmen ???? – maba

0

konfigurieren Maven-Compiler-Plugin die Kompilierung zu überspringen. Noch einmal, ich empfehle es nicht.

<project> 
    <properties> 
    <maven.test.skip>true</maven.test.skip> 
    </properties> 
    [...] 
    <build> 
    <plugins> 
     <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-compiler-plugin</artifactId> 
     <version>3.0</version> 
     <configuration> 
     <executions> 
      <execution> 
      <id>default-testCompile</id> 
      <phase>test-compile</phase> 
      <goals> 
       <goal>testCompile</goal> 
      </goals> 
      <configuration> 
       <skip>${maven.test.skip}</skip> 
      </configuration> 
      </execution> 
     </executions> 
     </plugin> 
    </plugins> 
    </build> 
    [...] 
</project> 
+0

Wenn ich die Testkompilierung aktivieren und später ausführen muss, funktioniert mvn clean install -Dmaven.test.skip = false funktioniert? Oder brauche ich einen anderen Parameter? –

+0

@Rafael. Ich schätze, du kannst 'maven.test.skip' machen, um eine doppelte Pflicht zu bekommen –