2012-03-29 11 views
6

भीतर जावा रन वर्ग फ़ाइल मैं अपने कोड एक जारMaven कार्यकारी: जार

जार ठीक से पैक किया जाता है में पैक किया है।

jar -tfv target/test-1.0-SNAPSHOT.jar 

com/ 
com/codevalid/ 
com/codevalid/App.class 
log4j.xml 
META-INF/maven/com.codevalid/test/pom.xml 
META-INF/maven/com.codevalid/test/pom.properties 

मैं उन्हें निष्पादित कर सकते हैं, जब वे exec:java

कैसे Maven exec:java का उपयोग कर जार के अंदर वर्ग फ़ाइल को चलाने के लिए उपयोग करते हुए अलग-अलग वर्ग फ़ाइलों के रूप में मौजूद हैं?

+1

आपका प्रश्न क्या है? – magomi

+0

क्षमा करें, maven exec का उपयोग कर जार के भीतर क्लास फ़ाइल कैसे चलाएं: जावा – codevalid

+0

इससे मदद मिल सकती है। http://stackoverflow.com/questions/42337857/mvn-execjava-to-run-a-java-file-in-an-external-jar-file – prime

उत्तर

3

आपको अपनी जार फ़ाइल को निष्पादन प्लगइन पर निर्भरता के रूप में शामिल करने की आवश्यकता है, उदा। इस तरह:

<plugin> 
<groupId>org.codehaus.mojo</groupId> 
<artifactId>exec-maven-plugin</artifactId> 
<version>1.2.1</version> 
<executions> 
    <execution> 
    <phase>install</phase> 
    <goals> 
     <goal>java</goal> 
    </goals> 
    <configuration> 
     <mainClass>com.codevalid.App</mainClass> 
    </configuration> 
    </execution> 
</executions> 
<dependencies> 
    <dependency> 
    <groupId>myGroup</groupId> 
    <artifactId>test</artifactId> 
    <version>1.0-SNAPSHOT</version> 
    </dependency> 
</dependencies> 

आप dependency घोषणा को छोड़ सकते हैं अगर com.codevalid.App वर्ग अपने वर्तमान परियोजना के हिस्से के रूप में संकलित किया गया है।

+1

हाय, जानकारी के लिए धन्यवाद, लेकिन ऐसा लगता है कि यह केवल तभी काम करता है भंडार में जार। मैं जो करना चाहता था वह जार का परीक्षण करना है, इससे पहले कि मैं इसे रेपो में इंस्टॉल कर सकूं। क्या कोई तरीका है जहां मैं इस जार ** के ** ** मैवेन निष्पादन के लिए निर्दिष्ट कर सकता हूं: जावा – codevalid

5

ठीक है, मैं अंत में यह कर रहा हूं।
मैं जार

mvn assembly:single 

का उपयोग कर बनाया गया है और

java -jar ./target/App-1.0-SNAPSHOT-jar-with-dependencies.jar com.codevalid.App 

मैं एक वैकल्पिक मैं कहाँ

mvn exec:java -Dexec.mainClass="com.codevalid.App" 

इस्तेमाल किया जा सकता था देखा था इस्तेमाल किया लेकिन मुझे यकीन है कि कैसे के नाम से पारित नहीं था जार क्लासपाथ

0

आप classpathScope और includePluginDependencies या includeProjectDependencies classpath पर पिक जार फ़ाइलों को पैरामीटर निर्दिष्ट करने के लिए है।

यहाँ एक उदाहरण है:

  <configuration> 
       <executable>java</executable> 
       <mainClass>com.google.jstestdriver.JsTestDriver</mainClass> 
       <classpathScope>test</classpathScope> 
       <includePluginDependencies>true</includePluginDependencies> 
       <includeProjectDependencies>true</includeProjectDependencies> 
       <commandlineArgs>--port 9876</commandlineArgs> 
      </configuration> 
1

आप जोड़कर exec:java लक्ष्य का उपयोग करते हुए एक जार फ़ाइल चला सकते हैं कुछ arguments:

<plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>exec-maven-plugin</artifactId> 
    <version>1.3.2</version> 
    <configuration> 
     <mainClass>org.example.Main</mainClass> 
     <arguments> 
      <argument>-jar</argument> 
      <argument>target/myJar-1.0-SNAPSHOT.jar</argument> 
     </arguments> 
    </configuration> 
</plugin> 

आप एक निष्पादन योग्य जार है और करने के लिए नहीं करना चाहते हैं एंट्री पॉइंट को परिभाषित करें, आपको executable सेट करने और exec:exec लक्ष्य का उपयोग करने की आवश्यकता है:

<plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>exec-maven-plugin</artifactId> 
    <version>1.3.2</version> 
    <configuration> 
     <executable>java</executable> 
     <arguments> 
      <argument>-jar</argument> 
      <argument>target/myJar-1.0-SNAPSHOT.jar</argument> 
     </arguments> 
    </configuration> 
</plugin> 
+0

क्या होगा यदि मैं 'org.example.Main' क्लास की मुख्य विधि में कुछ तर्क पारित करना चाहता हूं? – prime

+1

@ प्राइम मैंने इसका परीक्षण नहीं किया है, लेकिन मुझे लगता है कि आप [''] (http://www.mojohaus.org/exec-maven-plugin/exec-mojo.html#commandlineArgs) का उपयोग कर सकते हैं वास्तविक अनुप्रयोग – Kapep

+0

पर तर्क पास करें सुझाव के लिए धन्यवाद, यह जांच लेंगे। वैसे भी वास्तविक समस्या http: // stackoverflow का जवाब मिला।com/प्रश्न/42337857/mvn-execjava-टू-रन-ए-जावा-फ़ाइल-इन-एक-बाह्य-जार फ़ाइल – prime

संबंधित मुद्दे