2009-07-09 14 views
5

के साथ एक स्वयं निहित स्रोत रिलीज बनाना अब तक हम अपनी कंपनी में चींटी का उपयोग करते हैं। जब भी हम क्लाइंट को एप्लिकेशन भेजना चाहते थे तो हम एक विशेष चींटी स्क्रिप्ट चलाते थे जो सभी जार पुस्तकालयों और चींटी के साथ हमारे सभी स्रोत कोड को एक साधारण बैच फ़ाइल के साथ पैक करता था।मैवेन

तब क्लाइंट कंप्यूटर पर फ़ाइलों को किसी भी नेटवर्क एक्सेस के बिना रख सकता है (और यहां तक ​​कि चींटी भी नहीं) और बैच फ़ाइल चलाएं। जब तक कंप्यूटर के पास वैध जेडीके था तब बैच स्क्रिप्ट जार का उपयोग करके सभी कोड संकलित करेगी और एक डब्ल्यूएआर/ईएआर तैयार करेगी जो अंततः क्लाइंट द्वारा एप्लिकेशन सर्वर पर तैनात की जाएगी।

हाल ही में हम मेवेन 2 में चले गए। लेकिन मुझे एक ही चीज़ करने का कोई तरीका नहीं मिला है। मैंने मेवेन असेंबली प्लगइन देखा है लेकिन यह सिर्फ स्रोत वितरण या बाइनरी बनाता है। हमारा परिदृश्य वास्तव में एक मिश्रण है क्योंकि इसमें हमारे स्रोत कोड शामिल हैं, लेकिन हमारे द्वारा उपयोग किए जाने वाले पुस्तकालयों के बाइनरी जार (उदाहरण के लिए स्प्रिंग, हाइबरनेट)

तो क्या मेवेन के साथ एक स्वयं निहित असेंबली/रिलीज/पैकेज बनाना संभव है जो कोई भी कर सकता है किसी कंप्यूटर में कोई नेटवर्क एक्सेस नहीं है ??? इसका मतलब है कि सभी पुस्तकालयों को अंदर रखा जाना चाहिए।

अतिरिक्त बोनस अगर मेवेन स्वयं भी अंदर है, लेकिन यह सख्त आवश्यकता नहीं है। अंतिम पैकेज को केवल एक कमांड द्वारा संकलित किया जाना चाहिए (एक सिस्टम प्रशासक के लिए आसान)।

मैं इसके लिए अपना खुद का मेवेन प्लगइन लिखने की सोच रहा था लेकिन मुझे संदेह है कि किसी को पहले से ही इसका सामना करना पड़ा है।

उत्तर

1

आप इस तरीके का प्रयास हो सकता है: mvn चींटी

  • का उपयोग करें: एक Maven परियोजना
  • यकीन है कि चींटी बनाने से चींटी निर्माण स्क्रिप्ट बनाने के लिए चींटी एक परियोजना निर्भरता
  • एक निर्माण करने के लिए विधानसभा का प्रयोग है चींटी
    प्रणाली

या योजना ख:

+०१२३५१६४१०६१
  • mvn चींटी का उपयोग करें: चींटी एक Maven परियोजना
  • यकीन है कि चींटी बनाने से लिपियों चींटी निर्माण बनाने के लिए एक परियोजना निर्भरता
  • एक "बूटस्ट्रैप वर्ग" चींटी फोन और निर्माण को चलाने के लिए लिखें है
  • उपयोग appassembler एक पटकथा का निर्माण का निर्माण और पर्यावरण

योजना ख में स्थापित करने के लिए, आप पैक स्रोत जार से एक स्रोत पेड़ किसी ऐसे स्थान की स्थापना की, और फिर appassembler निर्माण बल्ले या श स्क्रिप्ट का उपयोग कॉल करने के लिए करने के लिए स्क्रिप्ट लिखने चाहते हैं बूटस्ट्रैप और चींटी के माध्यम से निर्माण। आपका बूटस्ट्रैप बिल्ड करने से पहले या बाद में करने के लिए आपको कुछ भी करने की ज़रूरत है।

उम्मीद है कि इससे मदद मिलती है।

+0

अच्छा! मुझे चींटी के बारे में पता नहीं था: चींटी – kazanaki

0

शायद एक उत्तर जो मैंने एक समान प्रश्न के लिए सबमिट किया है वह कुछ सहायता का हो सकता है। Can maven collect all the dependant jars for a project to help with application deployment? देखें एक टुकड़ा गायब है कि असेंबली में स्रोत कोड कैसे शामिल करें। मुझे कल्पना करनी है कि असेंबली प्लगइन के साथ इसे प्रबंधित करने का कोई तरीका है। यह वितरण में मेवेन को शामिल करने का भी संबोधित नहीं करता है।

चींटी से मेवेन जाने का कारण क्या था? ऐसा लगता है जैसे चींटियों के साथ सब कुछ ठीक से काम करता था, तो मैवेन आपको यहां खरीद रहा है?

यदि यह केवल निर्भरता प्रबंधन है, तो techniques for leveraging Maven from Ant हैं जो आपको दोनों दुनिया के सर्वश्रेष्ठ प्रदान करते हैं।

+0

हम चींटी से मेवेन चले गए, मुख्य रूप से क्योंकि चींटी स्क्रिप्ट बहुत जटिल हो रही थीं और कुछ बिंदु पर बिल्ड सर्वर के अलावा किसी भी अन्य सिस्टम पर चलाने के लिए उन्हें असंभव बनाने के अंदर कठोर कोड थे। अब यह जानना भी आसान है कि एक परियोजना में कौन से पुस्तकालय (और लाइसेंस) का उपयोग किया जाता है। – kazanaki

0

स्रोत प्लगइन आपको एक स्रोत "स्रोत: जार" स्रोत का स्रोत प्रदान करेगा। फिर आप अपनी आंतरिक परियोजनाओं (इन स्रोत जारों के संदर्भ में स्रोतों का उपयोग करके) और स्रोतों से बाइनरी जार को एक वितरण में स्रोत जार को गठबंधन करने के लिए असेंबली प्लगइन का उपयोग कर सकते हैं।

हालांकि, इसे एक संकलित इकाई में बदलने के लिए, मेरे पास कोई सुझाव नहीं है। आप निश्चित रूप से मेवेन को बंडल कर सकते हैं, लेकिन आपको अपनी परियोजना बनाने के लिए आवश्यक सभी प्लगइन युक्त एक बंडल बनाना होगा! मुझे ऐसा करने के लिए किसी मौजूदा उपकरण की जानकारी नहीं है।

+0

हा! हाँ यह मुश्किल हिस्सा है। एक compilable इकाई कैसे प्राप्त करें! – kazanaki

0

यह कैसे मैं यह कर ... पोम के निर्माण ओर से है इस में जोड़ें:

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-source-plugin</artifactId> 
      <executions> 
       <execution> 
        <id>attach-sources</id> 
        <phase>verify</phase> 
        <goals> 
         <goal>jar</goal> 
        </goals> 
       </execution> 
      </executions> 
     </plugin> 
    </plugins> 
</build> 

और फिर प्रोफाइल खंड पर इस बिट में जोड़ें:

<profiles> 
     <profile> 
      <id>release</id> 
      <build> 
       <plugins> 
        <plugin> 
         <groupId>org.apache.maven.plugins</groupId> 
         <artifactId>maven-source-plugin</artifactId> 
         <executions> 
          <execution> 
           <goals> 
            <goal>jar</goal> 
           </goals> 
          </execution> 
         </executions> 
        </plugin> 
       </plugins> 
      </build> 
     </profile> 
    </profiles> 

और जब मैं एक मेवेन स्थापित करता हूं तो यह जार बनाता है और स्रोत के एक जार में भी जांच करता है।

+0

यह कैसे मदद करता है? क्लाइंट एक जार फ़ाइल में स्रोत नहीं चाहता है। वे खुद को एक ही कमांड के साथ संकलित करना चाहते हैं। – kazanaki

2
अपने देव वातावरण से

, यदि आप निर्माण के तहत निम्न प्लग-इन

<plugin> 
    <artifactId>maven-assembly-plugin</artifactId> 
    <configuration> 
     <descriptorRefs> 
      <descriptorRef>jar-with-dependencies</descriptorRef> 
     </descriptorRefs> 
    </configuration> 
</plugin> 

और आह्वान mvn विधानसभा में शामिल हैं: विधानसभा, आप yourApp-संस्करण-साथ-dependencies.jar लक्ष्य फ़ोल्डर में मिलेगा। यह एक आत्मनिर्भर जार है, और एक मुख्य श्रेणी MANIFEST.MF प्रविष्टि के साथ, कोई भी एप्लिकेशन को डबल क्लिक और चलाने के लिए कर सकते हैं।

+0

मैंने पहले ही असेंबली प्लगइन को देखा है। यहां मुद्दा यह है कि ग्राहक खुद को स्रोत से कोड संकलित करना चाहता है। वे एक पूर्व संकलित जार नहीं चाहते हैं। लेकिन फिर भी धन्यवाद। – kazanaki