web-dev-qa-db-fra.com

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

J'ai fait un fichier de chauve-souris comme:

mvn clean; 
 paquet mvn;

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

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

90
rascio

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 call est que mvn est lui-même un fichier batch et que les fichiers batch doivent s’appeler avec call, sinon le contrôle ne revient pas à la votre interlocuteur.

Si vous souhaitez que les commandes suivantes soient répercutées sur la ligne de commande (dans la sortie par lots), vous devez également procéder à l'opération echo on après le call mvn est terminé (à la ligne suivante). En effet, mvn désactive l'écho et ne le rallume pas.

219
Joey

La réponse de Joey est excellente, mais peut-être qu'un exemple de code plus complet aidera tout le monde, comme moi, à résoudre le même problème de construction de plusieurs projets maven à partir d'un fichier batch sous 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
26
foupfeiffer

Vous pouvez également avoir le one-liner suivant:

call mvn clean package 
13
carlspring

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

@echo off
SET DEVELOPMENT_HOME=C:\Projects

cd %DEVELOPMENT_HOME%\Project1\
call mvn clean install

cd %DEVELOPMENT_HOME%\Project2\
call mvn clean install
8
Dmitri Algazin

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

par exemple, appelez mvn clean install

7
saurav

Le comportement observé provient de l'époque de MS-DOS 1.0 et est conservé pour des raisons de compatibilité. En guise de solution, vous devez utiliser Windows appel pour fonctionner 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.

nous pouvons utiliser ce qui suit pour construire un maven et le transférer dans 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%
0
user11404376