wake-up-neo.com

Wie kann ich das maven-release-plugin dazu bringen, meine Tests zu überspringen?

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.

174
Steven

-Darguments="-DskipTests" ist, was Sie wollen, oder explizit die gegabelten Ausführungen in der POM konfigurieren.

397
bmargulies

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

40

Wenn Sie nur Integrationstests überspringen möchten, geschieht dies folgendermaßen:

-Darguments="-DskipITs"
21
David Gilks

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>
3
Mfuon Leonard

sie haben zu unterschiedliche Möglichkeiten, um Tests mit dem Release-Plugin zu vermeiden und zu überspringen

  • Die erste besteht darin, cli als Argument an das Release-Ziel oder die Release-Phasen weiterzugeben, indem Sie ein -Darguments angeben:

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.

2
idriss Eliguene

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
0