Bagaimana cara mengeksekusi lebih dari satu perintah maven di file bat?


115

Saya membuat file bat seperti:

mvn bersih;
paket mvn;

tetapi tidak berhasil, hanya perintah pertama yang dijalankan.

dapatkah seseorang membantu saya?

Jawaban:


252

Menggunakan

call mvn clean
call mvn package

Perhatikan bahwa Anda tidak memerlukan titik koma dalam file batch. Dan alasan mengapa Anda perlu menggunakan calladalah bahwa mvnitu sendiri adalah file batch dan file batch perlu memanggil satu sama lain call, jika tidak, kontrol tidak akan kembali ke pemanggil.

Jika Anda ingin perintah berikutnya bergema ke baris perintah (ditampilkan dalam keluaran batch), Anda juga harus melakukannya echo onsetelah call mvnselesai (pada baris berikutnya). Ini karena mvnmematikan gema dan tidak menyalakannya kembali.


2
sama dengangradle
Prabs

27

Jawaban Joey sangat bagus, tetapi mungkin contoh kode yang lebih lengkap akan membantu orang lain seperti saya yang juga menemukan masalah serupa dalam membangun beberapa proyek maven dari file batch di 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

Anda juga dapat memiliki satu baris berikut:

call mvn clean package 

4
Namun, mereka harus menggunakan callagar apa pun yang mereka tulis setelah mvnperintah akan berjalan.
Joey

9

Saya memiliki lebih banyak proyek untuk dijalankan, saya membuat kelelawar seperti ini:

@echo off
SET DEVELOPMENT_HOME=C:\Projects

cd %DEVELOPMENT_HOME%\Project1\
call mvn clean install

cd %DEVELOPMENT_HOME%\Project2\
call mvn clean install

8

Gunakan 'call' saat Anda ingin memanggil file batch lain di file induk, sehingga kontrol akan dikembalikan ke file batch induk dan akan melanjutkan eksekusi.

misalnya hubungi mvn clean install


5

Bahaviour yang diamati berasal dari waktu MS-DOS 1.0 dan disimpan untuk alasan kompatibilitas, sebagai solusi Anda harus menggunakan fungsi panggilan Windows dengan cara berikut:

call mvn clean
call mvn package

"Panggilan" menjalankan satu program batch dari yang lain dan menafsirkannya sebagai subrutin.


-1

kita dapat menggunakan berikut ini untuk membangun maven dan meneruskannya ke folder unix mana pun untuk tujuan pengembangan

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

Menggunakan

panggilan mvn clean package

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

1
Di mana di sini lebih banyak informasi daripada di jawaban lainnya? Kelihatannya bagi saya seperti duplikat dari diterima (berusia 9 tahun) jawabannya
jeb
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.