2010-01-18 12 views
8

मैं अपने आवेदन को पैकेज करने के लिए Maven Appassembler प्लगइन का उपयोग कर रहा हूं। मैं एप्लिकेशन के साथ कुछ विन्यास फाइलों को पैकेज करना चाहता हूं। मुझे configurationDirectory और includeConfigurationDirectoryInClasspath पैरामीटर मिले हैं, लेकिन मुझे नहीं मिला है कि मुझे कॉन्फ़िगरेशन निर्देशिका कैसे बनाना चाहिए (और पॉप्युलेट)। मैंने फ़ाइलों को src/main/resources में डालने का प्रयास किया है, लेकिन यह सिर्फ उन्हें मेरे प्रोजेक्ट के लिए जार फ़ाइल में रखता है।मैवेन एपसेम्बलर के साथ कॉन्फ़िगरेशन फ़ाइलों को कैसे शामिल करूं?

मैवेन का उपयोग करके ऐसा करने का "उचित" तरीका क्या है?

उत्तर

7

दुर्भाग्य से यह वर्तमान रिलीज संस्करण में एपसेम्बलर प्लगइन की एक सीमा है। आम तौर पर, प्लगइन का उपयोग अंतिम आर्टिफैक्ट का उत्पादन करने के लिए असेंबली प्लगइन के संयोजन के साथ किया जाता है, जिसमें आप अपनी कॉन्फ़िगरेशन निर्देशिका का संदर्भ शामिल कर सकते हैं। हालांकि, अगर आप केवल एपसेम्बलर प्लगइन से एक कार्यात्मक संरचना चाहते हैं तो आपको फ़ाइलों को मैन्युअल रूप से कॉपी करने की आवश्यकता है। src/main/conf निर्देशिका के साथ antrun प्लगइन का उपयोग करने वाला एक उदाहरण यहां पाया जा सकता है: http://svn.apache.org/viewvc/archiva/trunk/archiva-jetty/

+0

एंटी-रन के लिए बहुत बहुत धन्यवाद :) –

0

इसके अलावा विभिन्न प्लेटफार्मों के लिए बिन स्क्रिप्ट उत्पन्न नहीं करता है। वितरण के लिए maven-assembly-plugin (पैकेज (ओं) {tar.gz, ज़िप}) बना सकते हैं। ये एक assemble.xml के माध्यम से कॉन्फ़िगर किया गया है। आप निर्दिष्ट करते हैं कि कौन सी फाइलें चलती हैं (किस विकल्प (chmod) के साथ), आदि। यह फ़ाइलों को फ़िल्टर भी कर सकता है (उनके भीतर मूल्यों को खोजें/प्रतिस्थापित करें)। आदि

1

डिफ़ॉल्ट रूप से, प्लगइन निर्देशिका src/main/config का उपयोग करता है।

पैरामीटर <configurationSourceDirectory>src/main/config</configurationSourceDirectory>

1

का उपयोग कर config फ़ाइलों के लिए स्रोत बदलने के लिए जब मैं copyConfigurationDirectory संपत्ति, यह प्रतियां config फ़ाइलों में शामिल हैं संभव है और उन्हें ठीक से बंडल।

<configurationDirectory>etc</configurationDirectory> 
    <configurationSourceDirectory>src/main/config</configurationSourceDirectory> 
    <copyConfigurationDirectory>true</copyConfigurationDirectory> 

हालांकि मुझे एक अलग समस्या है। मैं प्रतिलिपि बनाने से पहले अपनी कॉन्फ़िगरेशन फ़ाइलों को फ़िल्टर करना चाहता हूं, जो मुझे कुछ परेशानी दे रहा है।

+0

मेरे पास एक ही आवश्यकता है लेकिन इसका हल ढूंढने में असफल रहा – Jasonw

0

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