मावेन रन परियोजना


231

क्या जावा वर्ग की मुख्य विधि को अंजाम देने के लिए मावेन "चरण" या "लक्ष्य" है? मेरे पास एक ऐसी परियोजना है जिसे मैं केवल "मावन रन" जैसे कुछ करके मैन्युअल रूप से परीक्षण करना चाहता हूं।

जवाबों:


348

निष्पादित मावेन प्लगइन देखें । आप जावा क्लासेस चला सकते हैं:

mvn exec:java -Dexec.mainClass="com.example.Main" [-Dexec.args="argument1"] ...

मंगलाचरण इतना आसान हो सकता है जैसे mvn exec:javaकि प्लगइन कॉन्फ़िगरेशन आपके pom.xml में है। Mojohaus पर प्लगइन साइट एक अधिक विस्तृत उदाहरण है

<project>
    <build>
        <plugins>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>exec-maven-plugin</artifactId>
                <version>1.2.1</version>
                <configuration>
                    <mainClass>com.example.Main</mainClass>
                    <arguments>
                        <argument>argument1</argument>
                    </arguments>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

14
यह एक उत्तर की तरह दिखना चाहिए! संदर्भ + सरल उदाहरण + जटिल उदाहरण। सरल उदाहरण ने मेरे लिए चाल
चली

1
वहाँ इस प्लगइन का एक नया संस्करण है (1.2.1 से अधिक नया?)
अलेक्जेंडर मिल्स

हां, एक नया संस्करण है, इसलिए जब तक आप संस्करण 1.2.1 का उपयोग नहीं करना चाहते, तब तक 1 से 1 के ऊपर के टुकड़े की प्रतिलिपि न करें । नवीनतम संस्करण के लिए mojohaus.org/exec-maven-plugin/usage.html देखें। यह 1.6.0 है
user1053510

धन्यवाद, क्या आप यह भी जानेंगे कि यदि अन्य मॉड्यूल में निर्भरता के साथ सबमॉडल में एक मुख्य वर्ग कैसे चलाया जाए?
user1767316

यह मुख्य कक्षा
Dexter

23

1. POM.xml संपादित करें

में निम्नलिखित गुण जोड़ें pom.xml। सुनिश्चित करें कि आप पूरी तरह से योग्य वर्ग नाम का उपयोग करते हैं (अर्थात पैकेज नाम के साथ) जिसमें mainविधि है:

<properties>
        <exec.mainClass>fully-qualified-class-name</exec.mainClass>
</properties>

2. रन कमांड

अब टर्मिनल से, निम्न कमांड को ट्रिगर करें:

mvn clean compile exec:java

नोट आप -Dexec.args="xxx"ध्वज के माध्यम से आगे के तर्क पास कर सकते हैं ।


क्या यह वास्तव में काम करता है? मैंने इसे दोनों के रूप में आज़माया है: <exec.mainClass> $ {foo.bar.SomeMainClass} </ exec.mainClass> और <exec.mainClass> foo.bar.SomeMainClass </execainClass> और यह काम नहीं करता है । त्रुटि समान है: [ERROR] लक्ष्य org.codehaus.mojo को निष्पादित करने में विफल: निष्कासन-मावेन-प्लगइन: 1.6.0: java (डिफ़ॉल्ट-सीएलआई) प्रोजेक्ट न्यूट्रेक्स पर: लक्ष्य org.codehaus.mojo के लिए 'mainClass' पैरामीटर : निष्पादन-मावेन-प्लगइन: 1.6.0: जावा गायब हैं या अमान्य हैं -> [सहायता 1]
नेनाद बुलवाटोविक

यह काम करता है, आप इस पोस्ट की जांच करना चाहते हैं
Saikat

@NenadBulatovic: यदि आप $ {foo.bar.SomeMainClass} को foo.bar.SomeMainClass के साथ काम करते हैं -> $ या {} के बिना
कृष्ण संतोष संपत

14

उपर्युक्त उत्तर सही हैं, लेकिन मैं इसे मेरे जैसे noobs के लिए सरल कर रहा हूं। अपने प्रोजेक्ट की pom फ़ाइल में। एक नई संपत्ति जोड़ें exec.mainClassऔर उसका मूल्य उस वर्ग के रूप में दें जिसमें आपकी मुख्य विधि शामिल है। मेरे लिए यह था DriverClassमें mainpkg। इसे अपनी परियोजना के अनुसार बदलें। यहां छवि विवरण दर्ज करें

ऐसा करने के बाद उस फ़ोल्डर पर जाएं जिसमें आपकी परियोजना शामिल है pom.xmlऔर इसे कमांड प्रॉम्प्ट पर चलाया जाता है mvn exec:java। इसे मुख्य विधि कहना चाहिए।


8

Pom.xml में नया प्लगइन जोड़ने की आवश्यकता नहीं है। बस इस कमांड को चलाते हैं

mvn org.codehaus.mojo:exec-maven-plugin:1.5.0:java -Dexec.mainClass="com.example.Main" | grep -Ev '(^\[|Download\w+:)' 

अधिक उपयोग के लिए मावेन निष्पादन प्लगइन देखें ।


आगे के तर्कों के माध्यम से-Dexec.args="...arg..."
sstn


2

clean package exec:java -P Class_Containing_Main_Method कमांड भी एक विकल्प है यदि आपके पास प्रोजेक्ट में केवल एक मुख्य विधि (PSVM) है, जिसमें निम्न मावेन सेटअप है।

इसके <properties></properties>अनुभाग में वर्ग का उल्लेख करना न भूलें pom.xml:

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <java.main.class>com.test.service.MainTester</java.main.class>
</properties>

<plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>exec-maven-plugin</artifactId>
        <version>1.2.1</version>
        <configuration>
           <mainClass>${java.main.class}</mainClass>
        </configuration>
</plugin>

एसटीएस रन कॉन्फ़िगरेशन मावेन सेटअप से ऊपर के साथ:

यहां छवि विवरण दर्ज करें


यह मेरे लिए सही नहीं लगता है। 'प्रोफ़ाइल' के लिए -P नहीं है? यदि आप इसे कमांड लाइन पर निर्दिष्ट कर रहे हैं तो आपको इसे प्लगइन गुणों में डालने की आवश्यकता क्यों है?
Rup

@Rup हाँ, -Pप्रोफ़ाइल के लिए है। इसे साझा किया, क्योंकि यह मावेन परियोजना को चलाने का एक विकल्प भी है।
अभिजीत
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.