2012-10-05 13 views
8

पर मेवेन जेनरेटेड जार कैसे चलाएं मैं कमांड लाइन पर चलाने के लिए एक मैवेन प्रबंधित प्रोजेक्ट प्राप्त करने की कोशिश कर रहा हूं।सीएलआई

मेरे पास pom.xml में निर्भरता का एक सेट है जिसे बाद में ~/.m2/रिपोजिटरी/में डाउनलोड और स्थापित किया जाता है। मैंने जार मैनिफेस्ट में क्लासपाथ जोड़ने के लिए अपने पोम में आवश्यक कॉन्फ़िगरेशन शामिल किया है।

अब समस्या यह है कि मैं जार चलाने का प्रयास कर रहा हूं: जावा -jar परियोजना-SNAPSHOT.jar।

जावा डाउनलोड की गई निर्भरताओं को नहीं ढूंढ सकता (मुझे लगता है क्योंकि वे मैनिफेस्ट में पथ के बिना सूचीबद्ध हैं?), लेकिन मुझे यकीन नहीं है कि यह कैसे चल रहा है।

उत्तर

5

विकल्प 1:
बनाए गए जार में निर्भर जार फ़ाइलें नहीं हैं।
आसान है और बहुत बेहतर समाधान AppAssembler प्लगइन का उपयोग करने के लिए है: तो, आप जावा वर्ग-पथ बताने के लिए जहां सभी निर्भर जार हैं

java -cp /lcoation/of/dependency1.jar:/location/of/dependency2.jar:/location/of/dependency3.jar -jar project-SNAPSHOT.jar 

विकल्प 2 की जरूरत है। क्या यह यह करता है एक निर्देशिका संरचना है कि

  1. निर्भर जार शामिल में अपने जार पैकेज
  2. बनाया जार
  3. खोल/खिड़कियों आलेख निष्पादित करने के लिए यह

यहाँ एक नज़र http://www.mojohaus.org/appassembler/appassembler-maven-plugin/

है

विकल्प 3:
यदि आप सभी सामान नहीं चाहते हैं और सिर्फ एक jar-with-dependency रखना चाहते हैं आप यहां संदर्भित करना चाहते हैं How can I create an executable JAR with dependencies using Maven?

इसमें सभी निर्भर जार शामिल होंगे।


संपादित करें 1: विकल्प 1 के लिए, Brad M कहा कि आप यह dependency plugin का उपयोग कर सभी अपने प्रोजेक्ट की deps की एक सूची प्राप्त कर सकते हैं। dependency:build-classpath

+0

आह आप कर सकते हैं। – Nishant

+0

बहुत बढ़िया - यह वही है जो मुझे चाहिए था। क्या पैकेजिंग के साथ इस तरह की कोई भी चेतावनी है या यह ठीक है। मेमोरी उपयोग आदि? – Nick

+0

कुछ भी नहीं। इसकी बहुत ही सरल चीजें, जैसे कि जार बनाना, 2. रेपो फ़ोल्डर में आश्रितों की प्रतिलिपि बनाना, 3. एक शैल स्क्रिप्ट लिखना जो इस तरह 'java -jar ../myapp.jar Mainclass -cp ../repo/ * .jar' – Nishant

4
mvn exec:java -Dexec.mainClass="com.vineetmanohar.module.Main" -Dexec.classpathScope=runtime 

आप और अधिक उदाहरण यहाँ मिलेगा: 3 ways to run Java main from Maven

+0

मैवेन 3.0.4 '[त्रुटि] अज्ञात जीवन चक्र चरण ".mainClass = my.Main" के साथ मेरे लिए काम नहीं करता है। –