Comment puis-je faire fonctionner 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 relâcher si les tests ne réussissent pas, mais je ne contrôle pas que mes collègues écrivent des tests fiables.
-Darguments="-DskipTests"
est ce que vous voulez, ou configurer explicitement les exécutions forkées dans le pom.
-Darguments="..."
passe les arguments au processus maven forké, mais il est important de se rendre compte que deux commutateurs différents sont utilisés ici. Le -DskipTests
oblige maven à ne pas exécuter de test, mais les tests sont toujours compilés (ceci est important si vous avez des dépendances sur un type de test-jar). Le -Dmaven.test.skip=true
oblige maven à ne même pas compiler les tests, ce qui signifie que les jars de test ne seront pas générés.
Donc, vous devez utiliser -Darguments
, mais pour ignorer les tests en cours, utilisez uniquement skipTests
, pour les empêcher de compiler, utilisez maven.test.skip
.
Si vous voulez juste ignorer les tests d'intégration, cela le fera:
-Darguments="-DskipITs"
Pour ignorer le test unitaire entier, il utilise un argument
-Dmaven.test.skip = true
donc si vous voulez ignorer 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 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>
vous avez trop de choix à éviter et à ignorer les tests avec le plugin release
exemple: mvn -X -Darguments="-Dmaven.javadoc.skip=true -Dmaven.test.skipTests=true -Dmaven.test.skip=true" -P release-mode release:prepare
-La seconde consiste à 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 version d’abord sur une seule action, puis de modifier le fichier release.properties du répertoire de travail et de regarder le fichier 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 que vous puissiez effectuer la libération.
Aucun plug-in maven ne déclenche littéralement la compilation ou l'exécution de tests. Ce sont les phases du cycle de vie Maven qui déclenchent les exécutions d'un ou de plusieurs plug-ins, lorsque ceux-ci ont des objectifs liés à une phase spécifique.
Donc, l’exécution d’un seul objectif de plug-in suffirait sans exécuter de tests:
mvn release:perform
ou combiner avec la construction et l'emballage du projet:
mvn clean package release:perform