182 votes

Comment puis-je faire en sorte que maven-release-plugin ignore mes tests ?

Comment faire pour que le maven-release-plugin s'exécute sans déclencher les tests ?

J'ai essayé

-Dmaven.test.skip=true 

et

-DskipTests 

et

-DpreparationGoals=clean

...et pourtant aucune ne fonctionne.

Oui, je sais que je ne devrais pas publier si les tests ne passent pas, mais je ne peux pas faire en sorte que mes collègues écrivent des tests fiables.

413voto

bmargulies Points 49855

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

1 votes

Cela fonctionne pour moi, merci et +1 mais ... Pourquoi est-ce nécessaire ?

5 votes

L'informatique est nécessaire parce que le processus de libération crée un nouveau processus maven, et les -DskipTests classiques ne sont pas transmis en tant que propriétés du système.

4 votes

J'aimerais pouvoir voter pour vous 2 en haut. J'ai passé des heures à essayer de résoudre ce problème... mais 1. ai-je manqué quelque chose dans la documentation ou la documentation mvn manque-t-elle quelque chose ? 2. J'avais <skipTests>true</skipTests> configuré dans le POM de mon entreprise. Cela n'a toujours pas fonctionné. C'est votre solution qui a fonctionné.

42voto

Engineer Dollery Points 3149

-Darguments="..." passe des arguments au processus maven bifurqué, mais il est important de réaliser qu'il y a deux commutateurs différents utilisés ici. L'option -DskipTests force maven à 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 de test-jar). Le site -Dmaven.test.skip=true force maven à ne même pas compiler les tests, ce qui signifie que les test-jars ne seront pas générés.

Vous devez donc utiliser -Darguments mais pour éviter les tests en cours, utilisez uniquement skipTests pour les empêcher de compiler, utilisez maven.test.skip .

21voto

David Gilks Points 89

Si vous voulez simplement sauter les tests d'intégration, cela fera l'affaire :

-Darguments="-DskipITs"

4voto

idriss Eliguene Points 51

Vous avez trop de choix différents pour éviter et sauter les tests avec le plugin de version

  • La première consiste à passer comme argument sur cli à l'objectif ou aux phases de la version 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'utiliser 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 surpasse la première.

Je vous recommande de préparer la libération d'abord sur une seule action et ensuite vous pouvez éditer le fichier release.properties sur la direction de travail et regarder le fichier release.properties. exec.additionalArguments proprié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.

1voto

Vincent C. Points 357

J'ai réussi à éviter de lancer le verify en ajoutant simplement l'élément configuration preparationGoals a clean :

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-release-plugin</artifactId>
  <version>2.5.3</version>
  <configuration>
    <preparationGoals>clean</preparationGoals> <!-- See here -->
  </configuration>
</plugin>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X