Wie kann ich das Maven-Release-Plugin zum Laufen bringen, ohne die Tests auszulösen?
Ich habe versucht
-Dmaven.test.skip=true
und
-DskipTests
und
-DpreparationGoals=clean
... und doch funktioniert nichts.
Ja, ich weiß, ich sollte nicht freigeben, wenn die Tests nicht bestanden werden, aber ich habe keine Kontrolle darüber, wie meine Kollegen zuverlässige Tests schreiben.
-Darguments="-DskipTests"
ist, was Sie wollen, oder explizit die gegabelten Ausführungen in der POM konfigurieren.
-Darguments="..."
übergibt Argumente an den Forked-Maven-Prozess, es ist jedoch wichtig zu wissen, dass hier zwei verschiedene Schalter verwendet werden. Das -DskipTests
zwingt maven, keine Tests auszuführen, aber die Tests werden noch kompiliert (dies ist wichtig, wenn Sie Abhängigkeiten von einem Test-Jar-Typ haben). Das -Dmaven.test.skip=true
zwingt Maven, die Tests nicht einmal zu kompilieren, was bedeutet, dass keine Test-Jars generiert werden.
Also musst du -Darguments
, aber um ausgeführte Tests zu überspringen, verwenden Sie nur skipTests
, um das Kompilieren zu stoppen, verwenden Sie maven.test.skip
.
Wenn Sie nur Integrationstests überspringen möchten, geschieht dies folgendermaßen:
-Darguments="-DskipITs"
Um den gesamten Komponententest zu überspringen, wird das Argument verwendet
-Dmaven.test.skip = true
wenn Sie also den Unit-Test überspringen möchten, wird dies behoben
mvn install -Dmaven.test.skip=true
mvn package -Dmaven.test.skip=true
oder alternativ kannst du skipTests im maven-surefire-plugin definieren
pom.xml
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.12.4</version>
<configuration>
<skipTests>true</skipTests>
</configuration>
</plugin>
sie haben zu unterschiedliche Möglichkeiten, um Tests mit dem Release-Plugin zu vermeiden und zu überspringen
beispiel: mvn -X -Darguments="-Dmaven.javadoc.skip=true -Dmaven.test.skipTests=true -Dmaven.test.skip=true" -P release-mode release:prepare
-Die zweite Möglichkeit besteht darin, diese Argumente für Ihre pom.xml im Build wie folgt auszuführen:
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
<dependencies>
<dependency>
<groupId>org.Apache.maven.scm</groupId>
<artifactId>maven-scm-provider-gitexe</artifactId>
<version>1.9.4</version>
</dependency>
</dependencies>
<configuration>
<skip>true</skip>
<skipTests>true</skipTests>
<preparationGoals>clean validate</preparationGoals>
<arguments>-Dmaven.javadoc.skip=true -Dmaven.test.skipTests=true -Dmaven.test.skip=true</arguments>
<useReleaseProfile>false</useReleaseProfile>
<releaseProfiles>release-mode</releaseProfiles>
<tagNameFormat>[email protected]{project.version}</tagNameFormat>
</configuration>
</plugin>
Beachten Sie, dass die zweite Methode die erste überschreibt.
Ich empfehle Ihnen, die Freigabe zunächst für eine einzelne Aktion vorzubereiten. Anschließend können Sie die Datei release.properties im Arbeitsverzeichnis bearbeiten und das exec.additionalArguments
Eigenschaften, wenn Ihre Argumente vorhanden sind. Es wird so aussehen: exec.additionalArguments=-Dmaven.javadoc.skip\=true -Dmaven.test.skipTests\=true -Dmaven.test.skip\=true -P release-mode
.
Nachdem Sie die Freigabe durchführen können.
Kein Maven-Plug-In löst buchstäblich die Kompilierung oder Ausführung von Tests aus. Es sind die Maven-Lebenszyklusphasen, die die Ausführung eines oder mehrerer Plug-Ins auslösen, wenn diese Ziele an eine bestimmte Phase gebunden haben.
Das Ausführen eines einzelnen Plug-In-Ziels würde also ohne die Ausführung von Tests ausreichen:
mvn release:perform
oder mit Projekterstellung und -verpackung kombinieren:
mvn clean package release:perform