Come posso ottenere maven-release-plugin per saltare i miei test?


177

Come posso far funzionare maven-release-plugin senza innescare i test?

Ho provato

-Dmaven.test.skip=true 

e

-DskipTests 

e

-DpreparationGoals=clean

... eppure nessuno funziona.

Sì, lo so che non dovrei rilasciarlo se i test non passano, ma non ho il controllo su come fare in modo che i miei colleghi scrivano test affidabili.

Risposte:


406

-Darguments="-DskipTests" è quello che vuoi o configurare esplicitamente le esecuzioni biforcute nel pom.


1
Funziona per me, grazie e +1 ma ... Wny è necessario?
javamonkey79,

5
L'IT è necessario perché il processo di rilascio prevede un nuovo processo maven e i tpical -DskipTests non vengono passati come proprietà di sistema.
Eddie,

4
vorrei poterti votare 2. Ho passato ore a cercare di farlo bene ... ma 1. Ho perso qualcosa nella documentazione o manca la documentazione di mvn? 2. Mi ero <skipTests>true</skipTests>configurato nella mia azienda POM. Non ha ancora funzionato. Ciò che ha funzionato è stata la tua soluzione.
Pulak Agrawal,

Hai bisogno di qualche configurazione specifica nel pom per farlo funzionare?
DenCowboy,

42

-Darguments="..."passa argomenti al processo di fork biforcato, ma è importante rendersi conto che qui ci sono due diversi switch. Le -DskipTestsforze devono ancora non eseguire alcun test, ma i test vengono comunque compilati (questo è importante se si hanno dipendenze su un tipo di test-jar). Le -Dmaven.test.skip=trueforze non devono nemmeno compilare i test, il che significa che non verranno generati vasi di test.

Quindi, è necessario utilizzare -Darguments, ma per saltare i test in esecuzione solo skipTests, per impedirne la compilazione maven.test.skip.


21

Se vuoi semplicemente saltare i test di integrazione, questo lo farà:

-Darguments="-DskipITs"

3

hai scelte troppo diverse per evitare e saltare i test con il plugin di rilascio

  • Il primo è passare come argomento su cli all'obiettivo o alle fasi di rilascio fornendo un -Dargument:

Esempio: mvn -X -Darguments="-Dmaven.javadoc.skip=true -Dmaven.test.skipTests=true -Dmaven.test.skip=true" -P release-mode release:prepare

-Il secondo è eseguire questi argomenti sul tuo pom.xml nella build in questo modo:

<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>TEST-@{project.version}</tagNameFormat>
                </configuration>
            </plugin>

Si noti che il secondo metodo ha la precedenza sul primo.

Ti ho raccomandato di preparare prima la versione in una singola azione e quindi puoi modificare il file release.properties nella directory di lavoro e cercare le exec.additionalArgumentsproprietà se i tuoi argomenti sono presenti. Sembrerà: exec.additionalArguments=-Dmaven.javadoc.skip\=true -Dmaven.test.skipTests\=true -Dmaven.test.skip\=true -P release-mode.

Dopo è possibile eseguire il rilascio.


2

Per saltare l'intero test unitario, usa l'argomento

-Dmaven.test.skip = true

quindi se si desidera saltare il test dell'unità questo risolverà

mvn install -Dmaven.test.skip=true
mvn package -Dmaven.test.skip=true

o in alternativa puoi definire skipTests in maven-surefire-plugin in

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>

2
Questa domanda riguarda in particolare il plug-in di rilascio di Maven, quindi questi non sono gli obiettivi di Maven che verranno utilizzati.
Jaap,

-2

Nessun plug-in maven innesca letteralmente la compilazione o l'esecuzione del test. Sono le fasi del ciclo di vita di Maven che innescano l'esecuzione di uno o più plug-in, quando questi hanno limitato gli obiettivi a una fase specifica.

Pertanto, eseguire un singolo obiettivo plug-in sarebbe sufficiente senza eseguire i test:

mvn release:perform

o combinalo con la creazione del progetto e il packaging:

mvn clean package release:perform
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.