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?

coquin
la source

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.

Joey
la source
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
foupfeiffer
la source
15

Vous pouvez également avoir le one-liner suivant:

call mvn clean package 
carlspring
la source
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
Dmitri Algazin
la source
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

saurav
la source
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.

Seweryn Habdank-Wojewódzki
la source
-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%
user11404376
la source
-2

Utilisation

appel mvn clean package

sample
------
echo %test%
cd %test%\ManaulActionAddNotes-test
call mvn clean
cd %test%\restAuthentication-test
call mvn clean
Boobesh kumar
la source
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