Ich habe einen Hudson Job für unser maven multi-project mit 5 Modulen erstellt, um die SNAPSHOT
Artefakte in das maven Repository zu deployen. Das ist in Ordnung, solange es ohne Testfehler erfolgreich erstellt. Jetzt möchte ich jedoch die folgenden Anforderungen erfüllen:
-Dmaven.test.failure.ignore=true
bewirkt, scheitert jedoch bei der nächsten Anforderung. mvn test -Dmaven.test.failure.ignore=true
, dann mvn deploy -DskipTests
) ist keine Lösung, da es einen Leistungsverlust darstellt und die Hudson-Berichtsseiten verwirrt und nicht atomar ist (es wird im zweiten Build erneut von den Repositorys aktualisiert). Gibt es eine Möglichkeit, dies zu erreichen?
Es gibt eine Post-Build-Option namens Deployment von Artefakten in das Maven-Repository . Wenn Sie Bereitstellen nicht auswählen, selbst wenn der Build instabil ist , bedeutet das, dass bei fehlgeschlagenem Test nichts bereitgestellt wird. Zusammen mit dem -fae
im Befehl sollte die Sache auf Ihre gewünschte Weise funktionieren.
Wenn die Build-Zeit kein Problem für Sie ist, ist es meiner Meinung nach die bessere Option, einen anderen Job zu erstellen, nur für die Bereitstellung. Etwas wie das:
Vielleicht können Sie versuchen, beide Jobs so zu konfigurieren, dass sie den gleichen Arbeitsbereich verwenden, und sparen so Zeit für den gesamten Build / Deploy-Prozess.
Wenn Sie Artifactory als Repository-Manager verwenden, können Sie das Hudson/Jenkins Artifactory-Plugin , um Ihre Artefakte bereitzustellen. Dieses Plugin wird nur dann Ihre Artefakte bereitstellen, wenn alle Tests für alle Module eines Maven Builds bestehen.