Comment puis-je demander à maven-release-plugin de sauter mes tests?

177

Comment puis-je exécuter le plugin maven-release-plugin sans déclencher les tests?

j'ai essayé

-Dmaven.test.skip=true 

et

-DskipTests 

et

-DpreparationGoals=clean

... mais aucun ne fonctionne.

Oui, je sais que je ne devrais pas publier si les tests échouent, mais je n'ai pas le contrôle de faire en sorte que mes collègues écrivent des tests fiables.

Steven
la source

Réponses:

406

-Darguments="-DskipTests" est ce que vous voulez, ou configurer explicitement les exécutions fourchues dans le pom.

bmargulies
la source
1
Cela fonctionne pour moi, merci et +1 mais ... Wny est-ce nécessaire?
javamonkey79
5
L'informatique est nécessaire car le processus de publication crée un nouveau processus maven et les tpical -DskipTests ne sont pas transmis en tant que propriétés système.
Eddie
4
souhaite que je pourrais vous voter 2. J'ai passé des heures à essayer de faire les choses correctement ... mais 1. Ai-je manqué quelque chose dans la documentation ou est-ce que la documentation mvn manque quelque chose? 2. J'avais <skipTests>true</skipTests>configuré dans mon entreprise POM. N'a toujours pas fonctionné. Ce qui a fonctionné était votre solution.
Pulak Agrawal
Avez-vous besoin d'une configuration spécifique dans le pom pour que cela fonctionne?
DenCowboy le
42

-Darguments="..."transmet des arguments au processus maven fourchu, mais il est important de réaliser que deux commutateurs différents sont utilisés ici. Le -DskipTestsmaven force à ne pas exécuter de tests, mais les tests sont toujours compilés (ceci est important si vous avez des dépendances sur un type test-jar). le-Dmaven.test.skip=true forces maven à ne même pas compiler les tests, ce qui signifie qu'aucun test-jars ne sera généré.

Donc, vous devez utiliser -Darguments, mais pour ignorer les tests en cours d'utilisation uniquement skipTests, pour les empêcher de compiler l'utilisation maven.test.skip.

Ingénieur logiciel
la source
21

Si vous souhaitez simplement ignorer les tests d'intégration, cela le fera:

-Darguments="-DskipITs"
David Gilks
la source
3

vous avez des choix trop différents pour éviter et sauter les tests avec le plugin de publication

  • La première consiste à passer en argument sur cli à l'objectif ou aux phases de publication en fournissant un -Darguments:

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

-La seconde est d'exécuter ces arguments sur votre pom.xml dans la construction comme ceci:

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

Notez que la deuxième méthode remplace la première.

Je vous ai recommandé de préparer la release d'abord sur une seule action et ensuite vous pouvez éditer le fichier release.properties sur le répertoire de travail et regarder les exec.additionalArgumentspropriétés si vos arguments sont là. Cela ressemblera à:exec.additionalArguments=-Dmaven.javadoc.skip\=true -Dmaven.test.skipTests\=true -Dmaven.test.skip\=true -P release-mode .

Après vous pouvez effectuer la libération.

idriss Eliguene
la source
2

Pour ignorer tout le test unitaire, il utilise l'argument

-Dmaven.test.skip = vrai

donc si vous voulez sauter le test unitaire, cela résoudra

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

ou bien vous pouvez définir skipTests dans maven-surefire-plugin dans

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>
Mfuon Leonard
la source
2
Cette question concerne spécifiquement le plugin de publication Maven, donc ce ne sont pas les objectifs Maven qui seront utilisés.
Jaap
-2

Aucun plug-in maven ne déclenche littéralement la compilation ou l'exécution des tests. Ce sont les phases du cycle de vie maven qui déclenchent l'exécution (s) d'un ou plusieurs plug-ins, lorsque ceux-ci ont des objectifs limités à une phase spécifique.

Ainsi, il suffit d'exécuter un seul objectif de plug-in sans exécuter de tests:

mvn release:perform

ou combiner avec la construction et l'emballage du projet:

mvn clean package release:perform
Yannis Sermetziadis
la source