Comment exécuter plus d'une commande maven dans un fichier bat?


115

J'ai fait un fichier chauve-souris comme:

mvn clean;
package mvn;

mais cela ne fonctionne pas, seule la première commande est exécutée.

Est-ce que quelqu'un peut m'aider?

Réponses:


252

Utilisation

call mvn clean
call mvn package

Notez que vous n'avez pas besoin de points-virgules dans les fichiers de commandes. Et la raison pour laquelle vous devez utiliser callest que mvnlui - même est un fichier de commandes et que les fichiers de commandes doivent s'appeler les uns les autres call, sinon le contrôle ne revient pas à l'appelant.

Si vous voulez que les commandes suivantes se répercutent sur la ligne de commande (afficher dans la sortie par lots), vous devez également le faire echo onaprès que le call mvnsoit terminé (sur la ligne suivante). C'est parce que mvndésactive l'écho et ne le rallume pas.


2
idemgradle
Prabs

27

La réponse de Joey est excellente, mais peut-être qu'un exemple de code plus complet aidera quelqu'un d'autre comme moi qui découvre également un problème similaire de construction de plusieurs projets maven à partir d'un fichier batch dans Windows:

REM maven itself uses a batch file so each mvn must be preceded by "call"
REM the -f flag specifies where the pom.xml is found for the project
REM mvn install will save the target output to %userprofile%\.m2\repository ...

call mvn install -f c:\Users\John\workspace\PropertiesReader\pom.xml

call mvn install -f c:\Users\John\workspace\PropertiesWriter\pom.xml

15

Vous pouvez également avoir le one-liner suivant:

call mvn clean package 

4
Néanmoins, ils doivent utiliser callpour que tout ce qu'ils écrivent après la mvncommande s'exécute.
Joey

9

J'ai plus de projets à exécuter, j'ai créé une telle chauve-souris:

@echo off
SET DEVELOPMENT_HOME=C:\Projects

cd %DEVELOPMENT_HOME%\Project1\
call mvn clean install

cd %DEVELOPMENT_HOME%\Project2\
call mvn clean install

8

Utilisez 'call' lorsque vous souhaitez invoquer un autre fichier de commandes dans le fichier parent, de sorte que le contrôle soit renvoyé au fichier de commandes parent et qu'il continue l'exécution.

par exemple, appelez mvn clean install


5

Le comportement observé provient de l'époque de MS-DOS 1.0 et il est conservé pour des raisons de compatibilité, en tant que solutions, vous devez utiliser la fonction d' appel Windows de la manière suivante:

call mvn clean
call mvn package

L '"appel" exécute un programme batch à partir d'un autre et l'interprète comme un sous-programme.


-1

nous pouvons utiliser ce qui suit pour construire un maven et le transmettre à n'importe quel dossier unix à des fins de développement

SET projectName=commonutil
cd %gitpath%\%projectName%
call mvn clean install -DskipTests=true %password%
IF %ERRORLEVEL% EQU 0 (Echo No error found) ELSE goto exitdoor 
SET jarpath="%gitpath%\%projectName%\target\%projectName%-0.0.1-SNAPSHOT.jar"
copy /Y %jarpath% "%libpath%"
scpg3 %jarpath% %ssh_profile_name%@%hostname%:%dev_lib_folder_name%

-2

Utilisation

appel mvn clean package

sample
------
echo %test%
cd %test%\ManaulActionAddNotes-test
call mvn clean
cd %test%\restAuthentication-test
call mvn clean

1
Où est ici plus d'informations que dans les autres réponses? Cela me ressemble comme un double de la réponse acceptée (9 ans)
jeb
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.