ग्रहण में स्वचालित रूप से एक JAR में परियोजना बनाएँ


171

मेरे पास एक ग्रहण परियोजना है जहाँ मैं अपने जावा प्रोजेक्ट को JAR में स्वतः रखना चाहता हूँ। मुझे पता है कि मेरे पास परियोजना को जार में निर्यात करने का एक विकल्प है; अगर मैं राइट क्लिक करता हूं; लेकिन मैं वास्तव में जो देख रहा हूं, वह यह है कि जैसे एक्लिप्स स्वचालित रूप से किसी प्रोजेक्ट की .classफ़ाइलों को बनाता है और उन्हें लक्ष्य फ़ोल्डर में डालता है; इसे स्वचालित रूप से एक JAR का निर्माण करना चाहिए और कुछ या विशिष्ट स्थान पर नवीनतम JAR की प्रतिलिपि बनाना चाहिए।

क्या जार को स्वचालित रूप से बनाने के लिए इस तरह से ग्रहण को कॉन्फ़िगर करने का विकल्प है?

बस लोगों को यह स्पष्ट करने के लिए, मेरे प्रश्न का उत्तर देने के लिए पर्याप्त धैर्य रखें मैं ANT को समाधान के रूप में नहीं देख रहा हूं; जैसा कि मैं पहले से ही इसका उपयोग करता हूं, लेकिन मैं इसे क्या पसंद करूंगा जो स्वचालित रूप से या तो समय आधारित ट्रिगर या बदलाव के साथ तत्काल निर्माण के साथ शुरू हो जाए।


1
मेरी व्यक्तिगत राय: एम 2 का उपयोग करें, ग्रहण का मावेन एकीकरण, इसलिए यह आपके लिए निर्माण के हिस्से के रूप में एक जार का उत्पादन करता है। मैंने हाल ही में मावेन के बिना ग्रहण का उपयोग करने की कोशिश की और विश्वास नहीं कर सकता कि मूल जावा बिल्डर कितना आदिम है।
क्रेग रिंगर

1
2018 के लिए आईडीई विशिष्ट कार्यक्षमता के बजाय एक बिल्ड टूल का उपयोग करें। मावेन आपको आईडीई स्वतंत्रता और कमांड लाइन समर्थन खरीदता है।
थोरबजोरन रावन एंडरसन

@ क्रेग रिंगर - क्या ऐसा करने के बारे में कोई लिंक है?
nsandersen

जवाबों:


27

अपाचे चींटी की जाँच करें

ग्रहण के साथ स्वचालित बिल्ड के लिए चींटी का उपयोग करना संभव है, यहां बताया गया है कि कैसे


मैं पहले से ही अपाचे चींटी का उपयोग बिल्ड बनाने और जार बनाने के लिए कर रहा हूं। लेकिन जो मैं वास्तव में देख रहा था वह अपाचे चींटी के चारों ओर एक रास्ता था, और सीधे ग्रहण का उपयोग कर रहा था।
प्रियांक

माफी, मैं पहले लिंक में लेख के माध्यम से नहीं गया था। यह वास्तव में मैं क्या जरूरत के बारे में बात करता है। धन्यवाद।
प्रियांक

1
कोनराड के जवाब से अधिक बारीकी से मेल खाता है कि ओपी क्या देख रहा था।
लाइकोन

लाइकोनो, मैं असहमत हूं - ओपी चाहता था कि जार तारीख तक बना रहे, और जार फ़ाइल निर्यात करने से इस समस्या को हल करने की कोशिश नहीं की जाती है।
जेम्स मूर

1
जुलाई 2011 में, @Peter द्वारा संदर्भित लेख इस बारे में बात नहीं करता है कि जार फ़ाइल कैसे बनाई जाए।
जेम्स मूर

288

आप एक .jardescफ़ाइल चाहते हैं । वे स्वचालित रूप से किक नहीं करते हैं, लेकिन यह 2 क्लिक के भीतर है।

  1. अपने प्रोजेक्ट पर राइट क्लिक करें
  2. चुनें Export > Java > JAR file
  3. शामिल फ़ाइलों और नाम आउटपुट JAR चुनें, फिर क्लिक करें Next
  4. "कार्यक्षेत्र में इस जार के विवरण को सहेजें" की जाँच करें और नई .jardescफ़ाइल के लिए एक नाम चुनें

अब, आपको बस अपनी .jardescफ़ाइल पर राइट क्लिक करना है और चुनना है Create JARऔर इसे उसी स्थान पर निर्यात करना होगा।


दुख की बात है कि इस उत्तर को महीनों पहले (या सबसे अच्छा उत्तर) अधिक उत्थान नहीं मिला। ओह ठीक है, अब तक कोनराड चला गया है।
डैन रोसेन्स्टार्क

25
ग्रहण गैलीलियो में, मुझे आपका चरण 1 फ़ाइल -> निर्यात -> जावा -> JAR फ़ाइल से बदलना पड़ा।
मैट हगिंस

9
क्या 'राइट क्लिक -> क्रिएट जार' कदम को स्वचालित करने का एक तरीका है?
आसफ

4
क्या 'राइट क्लिक -> क्रिएट जेएआर' स्टेप को स्वचालित करने का एक तरीका है या इसे एक महत्वपूर्ण कॉम्बो से बाँधना है?
पचेरियर

5
मैं वास्तव में बनाने के लिए "निर्यात ... -> जावा -> रन करने योग्य जार फ़ाइल" का उपयोग करता हूं।
टेडट्रिपिन

70

एक चींटी फ़ाइल बनाएँ और इसे बनाने के लिए ग्रहण को बताएं। केवल दो चरण हैं और प्रत्येक चरण-दर-चरण निर्देशों के साथ आसान है।


चरण 1 एक build.xml फ़ाइल बनाएँ और पैकेज एक्सप्लोरर में जोड़ें:

<?xml version="1.0" ?>
<!-- Configuration of the Ant build system to generate a Jar file --> 
<project name="TestMain" default="CreateJar">
  <target name="CreateJar" description="Create Jar file">
        <jar jarfile="Test.jar" basedir="." includes="*.class" />
  </target>
</project>

ग्रहण को नीचे स्क्रीनशॉट की तरह कुछ दिखना चाहिए। बिल्ड आइकन पर ध्यान दें। build.xml ग्रहण परियोजना में Build.xml

चरण 2 परियोजना में रूट नोड पर राइट-क्लिक करें। - गुण का चयन करें - बिल्ड का चयन करें - नया चुनें - चींटी निर्माण चुनें - मुख्य टैब में, बिन फ़ोल्डर में build.xml फ़ाइल का पथ पूरा करें ।

चींटी बिल्डर विन्यास बनाएँ कदम - लक्ष्य टैब

आउटपुट की जाँच करें

निर्माण के बाद ग्रहण आउटपुट विंडो (कंसोल नामित) को निम्नलिखित दिखाना चाहिए:

Buildfile: /home/<user>/src/Test/build.xml

CreateJar:
         [jar] Building jar: /home/<user>/src/Test/Test.jar
BUILD SUCCESSFUL
Total time: 152 milliseconds

संपादित करें: @yeoman और @betlista द्वारा कुछ उपयोगी टिप्पणियां

@ आयमान को लगता है कि सही शामिल होंगे / / .क्रास नहीं, * .class, जैसा कि ज्यादातर लोग पैकेज का उपयोग करते हैं और इस प्रकार वर्ग फ़ाइलों के लिए पुनरावर्ती खोज फ्लैट समावेशन की तुलना में अधिक समझ में आता है

@betlista मैं src फ़ोल्डर में build.xml नहीं करने के लिए पुनर्संयोजन करेगा


2
हां, आप निम्न चरण के लिए लक्ष्य चुन सकते हैं: एक स्वच्छ, मैनुअल बिल्ड, ऑटो बिल्ड और एक क्लीन के दौरान। ऑटो बिल्ड आपको वह देना चाहिए जो आप चाहते हैं :)
थॉमस ब्राट

8
दोनों की कोशिश करने के बाद, यह समाधान कोनराड की तुलना में बहुत बेहतर लगता है। इसके लिए आपको अपनी बिल्ड फ़ाइल में कुछ पथों को मैन्युअल रूप से निर्धारित करना होगा लेकिन यह स्वचालित निर्माण (2 क्लिक के बजाय) की अनुमति देता है और आसान अनुकूलन की अनुमति देता है (उदाहरण के लिए बिल्ड के बाद जार की प्रतिलिपि बनाएँ)। यहाँ कैसे एक जार फ़ाइल बनाने के लिए जब जड़ में फ़ाइल का निर्माण और संकुल के कई नेस्टेड स्तर होने:<jar jarfile="dist/mypackage.jar" basedir="bin/" includes="**/*.class" />
8

3
+1 यह कैसे स्वीकार किया गया उत्तर है और सबसे अधिक मतदान भी नहीं हुआ है?
जुआन गार्सिया

2
आपका बहुत बहुत धन्यवाद। मैं build.xmlsrc फ़ोल्डर में नहीं करने के लिए पुनर्संयोजन होगा, लेकिन बाकी ठीक काम कर रहा है, अद्भुत!
बेटलिस्टा

1
मुझे लगता है कि सही शामिल होंगे / .class, * .class, जैसा कि अधिकांश लोग पैकेज का उपयोग करते हैं और इस प्रकार वर्ग फ़ाइलों के लिए पुनरावर्ती खोज फ्लैट समावेशन की तुलना में अधिक समझ में आता है। मेरे +1 को तब तक हटाएंगे, क्योंकि उत्तर आमतौर पर काम नहीं करता क्योंकि यह खड़ा है।
यमन

13

ग्रहण में एक कस्टम बिल्डर को परिभाषित करके यह संभव है (पीटर के जवाब में लिंक देखें)। हालाँकि, जब तक कि आपका प्रोजेक्ट बहुत छोटा नहीं है, यह आपके कार्यक्षेत्र को अस्वीकार्य रूप से धीमा कर सकता है। वर्ग फ़ाइलों के लिए ऑटोबायिल्ड वृद्धिशील रूप से होता है, अर्थात केवल एक परिवर्तन से प्रभावित उन वर्गों को फिर से जोड़ दिया जाता है, लेकिन JAR फ़ाइल को फिर से बनाया और पूरी तरह से कॉपी करना होगा, हर बार जब आप कोई परिवर्तन सहेजते हैं।


5

पीटर के जवाब और मिचेल के अलावा इसके बारे में आप पा सकते हैं कि मैं एक ग्रहण जावा परियोजना में कैसे एक स्वचालित रूप से एक .jar फ़ाइल उत्पन्न करता हूं । क्योंकि यहां तक ​​कि आपके पास अपनी परियोजना पर "* .jardesc" फ़ाइल है, आपको इसे मैन्युअल रूप से चलाना होगा। यह आपके "ग्रहण क्लिक परेशानी" को थोड़ा शांत कर सकता है।


1

थॉमस ब्रैट के उत्तर के ऊपर प्रयोग करके , बस सुनिश्चित करें कि आपका build.xml ठीक से कॉन्फ़िगर किया गया है:

<?xml version="1.0" ?>
<!-- Configuration of the Ant build system to generate a Jar file --> 
<project name="TestMain" default="CreateJar">
  <target name="CreateJar" description="Create Jar file">
        <jar jarfile="Test.jar" basedir="bin/" includes="**/*.class" />
  </target>
</project>

( डबल तारांकन नोटिस - यह सभी उप-निर्देशिकाओं में .class फ़ाइलों को देखने के लिए निर्माण बताएगा।)


0

एक बिल्डर लॉन्चर बनाना एक मुद्दा है क्योंकि 2 प्रोजेक्ट्स में एक ही बाहरी टूल बिल्ड नाम नहीं हो सकता है। प्रत्येक नाम अद्वितीय होना चाहिए। मैं वर्तमान में अपने निर्माण को स्वचालित करने और JAR को बाहरी स्थान पर कॉपी करने के लिए इस समस्या का सामना कर रहा हूं।

मैं आईबीएम के जिप बिल्डर का उपयोग कर रहा हूं, लेकिन यह सिर्फ एक मदद है, लेकिन वास्तविक नहीं है।

लोग आईबीएम ज़िप निर्माण प्लगइन का उपयोग करने की कोशिश कर सकते हैं। http://www.ibm.com/developerworks/websphere/library/techarticles/0112_deboer/deboer2.html#download

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