Come eseguire più di un comando Maven nel file bat?


115

Ho creato un file bat come:

mvn clean;
pacchetto mvn;

ma non funziona, viene eseguito solo il primo comando.

qualcuno può aiutarmi?

Risposte:


252

Uso

call mvn clean
call mvn package

Nota che non hai bisogno del punto e virgola nei file batch. E il motivo per cui è necessario utilizzare callè che esso mvnstesso è un file batch e i file batch devono chiamarsi a vicenda call, altrimenti il ​​controllo non torna al chiamante.

Se vuoi che i comandi successivi vengano visualizzati nella riga di comando (mostrati nell'output batch), devi farlo anche echo ondopo che call mvnè stato fatto (nella riga successiva). Questo perché mvndisattiva l'eco e non lo riattiva.


2
lo stesso congradle
Prabs

27

La risposta di Joey è ottima, ma forse un esempio di codice più completo aiuterà chiunque altro come me a capire un problema simile di costruire più progetti Maven da un file batch in 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

Puoi anche avere il seguente one-liner:

call mvn clean package 

4
Tuttavia, dovrebbero usare in callmodo che tutto ciò che scrivono dopo il mvncomando venga eseguito.
Joey

9

Ho più progetti da eseguire, ho creato questo tipo di pipistrello:

@echo off
SET DEVELOPMENT_HOME=C:\Projects

cd %DEVELOPMENT_HOME%\Project1\
call mvn clean install

cd %DEVELOPMENT_HOME%\Project2\
call mvn clean install

8

Utilizzare "call" quando si desidera richiamare un altro file batch nel file padre, in modo che il controllo venga restituito al file batch padre e continuerà l'esecuzione.

es. chiama mvn clean install


5

Il comportamento osservato risale ai tempi di MS-DOS 1.0 ed è mantenuto per motivi di compatibilità, poiché per le soluzioni dovrai utilizzare la funzione di chiamata di Windows nel modo seguente:

call mvn clean
call mvn package

La "chiamata" esegue un programma batch da un altro e lo interpreta come subroutine.


-1

possiamo usare quanto segue per costruire un Maven e passarlo a qualsiasi cartella unix per scopi di sviluppo

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

Uso

chiamata mvn clean package

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

1
Dove si trovano qui più informazioni rispetto alle altre risposte? Mi sembra un duplicato della risposta accettata (9 anni)
jeb
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.