[windows] 이 Windows 배치 파일의 첫 번째 행만 실행하지만 세 행이 모두 명령 쉘에서 실행되는 이유는 무엇입니까?

세 개의 Maven 명령을 차례로 실행하는 배치 파일이 있습니다. 스크립트에서 각 명령을 성공적으로 실행할 수 있습니다. 그러나 세 개의 명령을 모두 같은 파일에 추가하면 스크립트가 종료되기 전에 첫 번째 명령 만 실행됩니다. 왜 그런지 알아?

mvn install:install-file -DgroupId=gdata -DartifactId=base -Dversion=1.0 -Dfile=gdata-base-1.0.jar  -Dpackaging=jar -DgeneratePom=true
mvn install:install-file -DgroupId=gdata -DartifactId=blogger -Dversion=2.0 -Dfile=gdata-blogger-2.0.jar  -Dpackaging=jar -DgeneratePom=true
mvn install:install-file -DgroupId=gdata -DartifactId=blogger-meta -Dversion=2.0 -Dfile=gdata-blogger-meta-2.0.jar  -Dpackaging=jar -DgeneratePom=true

또한 세 명령을 모두 복사하여 명령 셸 (cmd.exe)에 붙여 넣으면 문제없이 차례로 실행됩니다. 따라서 이것은 dos 배치 파일의 일부 문제입니다.



답변

Maven은 배치 파일을 사용하여 비즈니스를 수행합니다. 배치 스크립트를 사용하는 call경우 호출 된 스크립트가 완료된 후 스크립트로 다시 돌아가도록 명령을 사용하여 다른 스크립트를 호출해야합니다 . call모든 명령 앞에 추가하십시오 .

시도 할 수있는 또 다른 것은 start비슷하게 작동 하는 명령을 사용하는 것 입니다.


답변

데이 call도움이됩니다. 그러나 오늘은 그렇지 않았습니다.

이것이 내가 해결 한 방법입니다.

박쥐 파일 내용 ( cmds 중 하나 일 때 배치 를 중지 하려는 경우 )

cmd1 && ^
cmd2 && ^
cmd3 && ^
cmd4

박쥐 파일 내용 ( cmds 중 하나 일 때 배치 를 계속 하려는 경우 )

cmd1 & ^
cmd2 & ^
cmd3 & ^
cmd4


답변

하나의 스크립트에서 더 많은 Maven 빌드를 실행하려면 다음과 같은 방식으로 Windows 호출 기능을 사용해야합니다 .

call mvn install:install-file -DgroupId=gdata -DartifactId=base -Dversion=1.0 -Dfile=gdata-base-1.0.jar  -Dpackaging=jar -DgeneratePom=true
call mvn install:install-file -DgroupId=gdata -DartifactId=blogger -Dversion=2.0 -Dfile=gdata-blogger-2.0.jar  -Dpackaging=jar -DgeneratePom=true
call mvn install:install-file -DgroupId=gdata -DartifactId=blogger-meta -Dversion=2.0 -Dfile=gdata-blogger-meta-2.0.jar  -Dpackaging=jar -DgeneratePom=true


답변

특정 mvn명령 이 있어야 exec하고 반환되지 않으므로 나머지 명령을 실행하지 않아야합니다.


답변

다음 배치 파일을 작성하고 실행하십시오.

Echo one
cmd
Echo two
cmd
Echo three
cmd

처음 두 줄만 실행됩니다. 그러나 명령 프롬프트에 “exit”를 입력하면 다음 두 줄이 처리됩니다. 다른 것을로드하는 쉘입니다.

이것이 스크립트에서 일어나고 있지 않은지 확인하려면 첫 번째 명령이 끝날 때 “exit”를 입력하십시오.

HTH!


답변