2012-03-27 13 views
1

ich ein Maven 3 Projekt Berufung folgende Reihenfolge in Hudson integriert habe:Wie kann man vermeiden Tests mehrere Laufzeit WHE Integration Maven Projektes hudson/jenkins

clean tomcat:redeploy site sonar:sonar 

Problem ist, dass JUnit 3 Mal ausgeführt wird, hier ist das Ziel Sequenz I erhalten:

>[INFO] [clean:clean {execution: default-clean}] 
>[INFO] [gwt:i18n {execution: default}] 
>[INFO] [gwt:generateAsync {execution: default}] 
>[INFO] [resources:resources {execution: default-resources}] 
>[INFO] [compiler:compile {execution: default-compile}] 
>[INFO] [checkstyle:check {execution: mycom-check}] 
>[INFO] [checkstyle:check {execution: extended-check}] 
>[INFO] [resources:copy-resources {execution: default}] 
>[INFO] [gwt:i18n {execution: default}] 
>[INFO] [gwt:generateAsync {execution: default}] 
>[INFO] [resources:resources {execution: default-resources}] 
>[INFO] [compiler:compile {execution: default-compile}] 
>[INFO] [checkstyle:check {execution: mycom-check}] 
>[INFO] [checkstyle:check {execution: extended-check}] 
>[INFO] [resources:copy-resources {execution: default}] 
>[INFO] [resources:testResources {execution: default-testResources}] 
>[INFO] [compiler:testCompile {execution: default-testCompile}] 
>[INFO] **[surefire:test {execution: default-test}]** 
>[INFO] [gwt:compile {execution: default}] 
>[INFO] [war:war {execution: default-war}] 
>[INFO] [***tomcat:redeploy*** {execution: default-cli}] 
>[INFO] [gwt:i18n {execution: default}] 
>[INFO] [gwt:generateAsync {execution: default}] 
>[INFO] [resources:resources {execution: default-resources}] 
>[INFO] [compiler:compile {execution: default-compile}] 
>[INFO] [checkstyle:check {execution: mycom-check}] 
>[INFO] [checkstyle:check {execution: extended-check}] 
>[INFO] [resources:copy-resources {execution: default}] 
>[INFO] [cobertura:instrument {execution: default-instrument}] 
>[INFO] [cobertura:instrument {execution: default-instrument}] 
>[INFO] [resources:testResources {execution: default-testResources}] 
>[INFO] [compiler:testCompile {execution: default-testCompile}] 
>[INFO] **[surefire:test {execution: default-test}]** 
>[INFO] [cobertura:cobertura {execution: default-cli}] 
>[INFO] [resources:testResources {execution: default-testResources}] 
>[INFO] [compiler:testCompile {execution: default-testCompile}] 
>[INFO] [surefire:test {execution: default-test}] 
>[INFO] [***site:site*** {execution: default-site}] 
>[INFO] task-segment: [sonar:sonar] (aggregator-style) 
>[INFO] [sonar:sonar {execution: default-cli}] 
>[INFO] [***sonar:sonar*** {execution: default-sonar}] 
>[INFO] [gwt:i18n {execution: default}] 
>[INFO] [gwt:generateAsync {execution: default}] 
>[INFO] [resources:resources {execution: default-resources}] 
>[INFO] [compiler:compile {execution: default-compile}] 
>[INFO] [checkstyle:check {execution: mycom-check}] 
>[INFO] [checkstyle:check {execution: extended-check}] 
>[INFO] [resources:copy-resources {execution: default}] 
>[INFO] [cobertura:instrument {execution: default-instrument}] 
>[INFO] [resources:testResources {execution: default-testResources}] 
>[INFO] [compiler:testCompile {execution: default-testCompile}] 
>[INFO] **[surefire:test {execution: default-test}]** 
>[INFO] [cobertura:cobertura {execution: default-cli}] 

Das ist sehr problematisch, da ein Fehler in Hudson es 3 dreimal zählen macht: http://issues.hudson-ci.org/browse/HUDSON-1557
jedoch in Jenkins fixiert sah: https://issues.jenkins-ci.org/browse/JENKINS-2068

Was mich überrascht ist, dass der "cobertura" Unit Testlauf zweimal durchgeführt wird. Ich bin neu zu maven, so dass ich nicht sicher bin, die Lösung "Lifecycle-Schritte" sehr gut zu verstehen. In der Vergangenheit wurden Zielauflösungen durchgeführt, um nur einmal jedes Ziel auszuführen. Meine Fragen sind:

  • Warum werden diese Cobertura Unit Tests zweimal ausgeführt? ist ein Fehler in meiner Konfiguration, in Maven, in einem Plugin?
  • Was kann ich testen, um zu verstehen?
  • Gibt es allgemein einen Maven-Befehl, der eine Vorschau der Sequenz anzeigt, die ausgeführt wird, ohne die echte Exec auszuführen? Ich habe nichts darüber gefunden, würde es aber sehr nützlich finden.

Danke für Ihre Ratschläge.

+0

Können Sie Ihre pom.xml posten? –

Antwort

0

Warum werden diese Cobertura-Komponententests zweimal ausgeführt? ist ein Fehler in meinem Config, in Maven, in einem Plugin?

Sowohl tomcat:redeploy als auch sonar:sonar laufen cobertura. Es ist ein Problem mit der Maven-Konfiguration und kann behoben werden.

Was kann ich testen, um zu verstehen?

Im Allgemeinen können Sie jedes Ziel separat ausführen, um zu sehen, was es tut.

Gibt es im Allgemeinen irgendeinen Maven-Befehl, der eine Vorschau der Sequenz anzeigt, die ausgeführt wird, ohne die echte Exec auszuführen? Ich habe nichts darüber gefunden, würde es aber sehr nützlich finden.

Normalerweise zeigt die Dokumentation jedes Ziels die Lebenszyklusphasen an, die für dieses Ziel ausgeführt werden. Es gibt keine dry-run Option in Maven.

+0

Seit gestern habe ich versucht, die Reihenfolge zu ändern: 'mvn clean tomcat: replace sonar: sonar site'. So invertieren Site und Sonar Ziele. Und es hat funktioniert ! nur ein Cobertura JUnit-Test. Ich habe keine spezifische Konfiguration für Tomcat/Site/Sonar in meinem Pom in Bezug auf Phase/Ziele Ausführung. – Gurvan