[windows] bat 파일에서 둘 이상의 maven 명령을 실행하는 방법은 무엇입니까?

다음과 같은 박쥐 파일을 만들었습니다.

mvn clean;
mvn 패키지;

하지만 작동하지 않고 첫 번째 명령 만 실행됩니다.

누군가 나를 도울 수 있습니까?



답변

사용하다

call mvn clean
call mvn package

배치 파일에는 세미콜론이 필요하지 않습니다. 그리고 사용해야하는 이유 call는 그 mvn자체가 배치 파일이고 배치 파일이를 사용하여 서로를 호출해야하기 때문입니다 call. 그렇지 않으면 제어가 호출자에게 반환되지 않습니다.

후속 명령이 명령 줄에 반영되도록하려면 (일괄 출력으로 표시) 완료 echo on후에도 수행해야합니다 call mvn(다음 줄에서). mvn에코는 꺼지고 다시 켜지지 않기 때문 입니다.


답변

Joey의 대답은 훌륭하지만 더 완전한 코드 예제는 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


답변

다음과 같은 한 줄짜리도 사용할 수 있습니다.

call mvn clean package 


답변

더 많은 프로젝트를 실행할 수 있으며 다음과 같은 박쥐를 만들었습니다.

@echo off
SET DEVELOPMENT_HOME=C:\Projects

cd %DEVELOPMENT_HOME%\Project1\
call mvn clean install

cd %DEVELOPMENT_HOME%\Project2\
call mvn clean install


답변

상위 파일에서 다른 배치 파일을 호출하려는 경우 ‘call’을 사용하여 제어가 상위 배치 파일로 반환되고 계속 실행되도록합니다.

예 : mvn clean install 호출


답변

관찰 된 bahaviour는 MS-DOS 1.0 당시부터 왔으며 호환성을 위해 유지됩니다. 솔루션 은 다음과 같은 방식으로 Windows 호출 기능을 사용해야합니다 .

call mvn clean
call mvn package

“호출”은 하나의 배치 프로그램을 다른 배치 프로그램에서 실행하고이를 서브 루틴으로 해석합니다.


답변

다음을 사용하여 maven을 빌드하고 개발 목적으로 모든 유닉스 폴더에 전달할 수 있습니다.

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%