बैट फाइल में एक से अधिक मावेन कमांड कैसे निष्पादित करें?


115

मैंने एक बैट फाइल बनाई जैसे:

mvan साफ;
mvan पैकेज;

लेकिन यह काम नहीं करता है, केवल पहली कमांड निष्पादित होती है।

क्या कोई मेरी मदत कर सकता है?

जवाबों:


252

उपयोग

call mvn clean
call mvn package

ध्यान दें कि आपको बैच फ़ाइलों में अर्धविराम की आवश्यकता नहीं है। और जिस कारण से आपको उपयोग करने की आवश्यकता है callवह यह है कि mvnस्वयं एक बैच फ़ाइल है और बैच फ़ाइलों को एक-दूसरे के साथ कॉल करने की आवश्यकता है call, अन्यथा नियंत्रण कॉलर पर वापस नहीं आता है।

यदि आप बाद के कमांड को कमांड लाइन (बैच आउटपुट में दिखाना) के लिए प्रतिध्वनित करना चाहते हैं, तो आपको यह करने के echo onबाद call mvn(अगली पंक्ति पर) भी करना होगा । ऐसा इसलिए है क्योंकि mvnयह प्रतिध्वनि को बंद कर देता है और इसे वापस चालू नहीं करता है।


2
उसी के साथgradle
प्रबस

27

जॉय का जवाब बहुत अच्छा है, लेकिन शायद एक अधिक पूर्ण कोड उदाहरण मेरे जैसे किसी और की मदद करेगा, जो विंडोज में एक बैच फ़ाइल से कई मावेन परियोजनाओं के निर्माण की एक समान समस्या का पता लगा रहा है:

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

आप निम्न एक-लाइनर भी रख सकते हैं:

call mvn clean package 

4
फिर भी, उन्हें उपयोग करना चाहिए callताकि mvnकमांड चलने के बाद वे जो कुछ भी लिखते हैं।
जॉय

9

मेरे पास चलाने के लिए अधिक परियोजनाएं हैं, मैंने इस तरह के बल्ले बनाए:

@echo off
SET DEVELOPMENT_HOME=C:\Projects

cd %DEVELOPMENT_HOME%\Project1\
call mvn clean install

cd %DEVELOPMENT_HOME%\Project2\
call mvn clean install

8

जब आप मूल फ़ाइल में किसी अन्य बैच फ़ाइल को आमंत्रित करना चाहते हैं, तो 'कॉल' का उपयोग करें, ताकि नियंत्रण मूल बैच फ़ाइल में वापस आ जाए और यह निष्पादन जारी रखेगा।

उदाहरण के लिए कॉल करें mvan क्लीन इंस्टॉल


5

देखा गया bahaviour MS-DOS 1.0 के समय से आता है और इसे संगतता कारणों से रखा जाता है, क्योंकि समाधान आप निम्न तरीके से Windows कॉल फ़ंक्शन का उपयोग करेंगे :

call mvn clean
call mvn package

"कॉल" एक बैच प्रोग्राम को दूसरे से निष्पादित करता है और इसे सबरूटीन के रूप में व्याख्या करता है।


-1

हम मावेन के निर्माण के लिए निम्नलिखित का उपयोग कर सकते हैं और इसे विकास उद्देश्य के लिए किसी भी यूनिक्स फ़ोल्डर में पास कर सकते हैं

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

उपयोग

कॉल mvn clean package

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

1
यहाँ अन्य उत्तरों की तुलना में अधिक जानकारी कहाँ है? यह मेरे लिए स्वीकृत (9 वर्षीय) उत्तर की एक प्रति की तरह दिखता है
जेब
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.