Làm thế nào để thực thi nhiều hơn một lệnh maven trong tệp bat?


114

Tôi đã tạo một tệp dơi như:

mvn sạch sẽ;
gói mvn;

nhưng nó không hoạt động, chỉ lệnh đầu tiên được thực hiện.

Ai đó có thể giúp tôi?

Câu trả lời:


251

Sử dụng

call mvn clean
call mvn package

Lưu ý rằng bạn không cần dấu chấm phẩy trong các tệp hàng loạt. Và lý do tại sao bạn cần sử dụng callmvnbản thân nó là một tệp hàng loạt và các tệp hàng loạt cần phải gọi lẫn nhau call, nếu không quyền điều khiển sẽ không quay trở lại trình gọi.

Nếu bạn muốn các lệnh tiếp theo lặp lại đến dòng lệnh (hiển thị trong đầu ra hàng loạt), bạn cũng phải thực hiện echo onsau khi call mvnhoàn tất (trên dòng tiếp theo). Điều này là do mvntắt tiếng vang và không bật lại.


2
cùng vớigradle
Prabs

27

Câu trả lời của Joey rất tuyệt, nhưng có thể một ví dụ mã hoàn chỉnh hơn sẽ giúp bất kỳ ai khác như tôi, những người cũng đang tìm ra vấn đề tương tự khi xây dựng nhiều dự án maven từ một tệp hàng loạt trong 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

Bạn cũng có thể có một lớp lót sau:

call mvn clean package 

4
Tuy nhiên, họ nên sử dụng callđể bất kỳ thứ gì họ viết sau mvnlệnh sẽ chạy.
Joey

9

Tôi có nhiều dự án hơn để chạy, tôi đã tạo một con dơi như thế này:

@echo off
SET DEVELOPMENT_HOME=C:\Projects

cd %DEVELOPMENT_HOME%\Project1\
call mvn clean install

cd %DEVELOPMENT_HOME%\Project2\
call mvn clean install

8

Sử dụng 'call' khi bạn muốn gọi một tệp lô khác trong tệp mẹ, để điều khiển đó sẽ được trả lại cho tệp lô mẹ và nó sẽ tiếp tục thực thi.

vd: gọi mvn clean install


5

Bahaviour được quan sát có từ thời MS-DOS 1.0 và nó được giữ lại vì lý do tương thích, như các giải pháp bạn sẽ sử dụng chức năng gọi của Windows theo cách sau:

call mvn clean
call mvn package

"Cuộc gọi" thực hiện một chương trình hàng loạt từ một chương trình khác và diễn giải nó như một chương trình con.


-1

chúng ta có thể sử dụng phần sau để tạo maven và chuyển nó vào bất kỳ thư mục unix nào cho mục đích phát triển

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

Sử dụng

gọi mvn clean package

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

1
Ở đây có nhiều thông tin hơn các câu trả lời khác ở đâu? Đối với tôi, nó giống như một bản sao của câu trả lời được chấp nhận (9 tuổi)
jeb
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.