2009-01-21 5 views
8

मैं अपने जावा प्रोजेक्ट से स्टैंड-अलोन एक्जिक्यूटिव जेनरेट करने के लिए Maven Application Assembler प्लगइन का उपयोग कर रहा हूं। एप्लिकेशन स्प्रिंग फ़ाइलों सहित कॉन्फ़िगरेशन फ़ाइलों में पढ़ता है। एप्लिकेशन असेंबलर प्लगइन में एप्लिकेशन के क्लासपाथ में एक आदि/निर्देशिका जोड़ने के लिए एक विकल्प (डिफ़ॉल्ट रूप से सक्रिय) है, लेकिन प्लगइन को मेरी कॉन्फ़िगरेशन फ़ाइलों को इस निर्देशिका में कॉपी करने के लिए मुझे क्या करना चाहिए?मैवेन प्रोजेक्ट के लिए मुझे एप्लिकेशन कॉन्फ़िगरेशन फाइल कहां रखनी चाहिए?

या अधिक आम तौर पर, मैवेन में एप्लिकेशन कॉन्फ़िगरेशन फ़ाइलों के लिए कोशेर स्थान कहां है, जिसे आर्टिफैक्ट में पैक नहीं किया जाना चाहिए?

उत्तर

1

मुझे नहीं पता कि मैं आपको सही तरीके से समझता हूं या नहीं। लेकिन मैंने एक परियोजना के लिए अतीत में क्या किया है जहां मुझे कॉन्फ़िगरेशन फ़ाइलों की प्रतिलिपि बनाने की आवश्यकता है, Maven AntRun plugin का उपयोग करें। मैंने जो किया वह प्रक्रिया-संसाधन चरण में प्लगइन निष्पादित किया गया है और एंटी कॉपी कार्य का उपयोग कर मेरी कॉन्फ़िगरेशन फ़ाइलों को निर्दिष्ट निर्देशिका में कॉपी किया है। असेंबलर प्लगइन पैकेज चरण में निष्पादित करता है, इसलिए यदि आप इसे सही जगह पर रखते हैं तो इसे अपनी कॉन्फ़िगरेशन फ़ाइलों को लेना चाहिए। उम्मीद है कि यह आपके प्रश्न का थोड़ा सा जवाब देगा।

+0

हाँ मुझे लगता है कि यह मैन्युअल रूप से करने का सबसे आसान तरीका होगा। मैंने सोचा कि क्या एपसेम्बलर प्लगइन आपके लिए यह कर सकता है, यानी कॉन्फ़िगरेशन फाइलें, कहें, src/etc से चुनें और उन्हें $ {appname}/etc पर कॉपी करें। – lindelof

6

आप संसाधन को छानने का उपयोग कर सकते हैं: http://maven.apache.org/guides/getting-started/index.html#How_do_I_filter_resource_files

छानने पर बारी:

... 
<build> 
... 
<resources> 
     <resource> 
     <directory>src/main/resources</directory> 
     <filtering>true</filtering> 
     </resource> 
    </resources> 
... 
</build> 
... 

src/मुख्य/संसाधनों के तहत एक फ़ाइल बनाने की तरह:

application.properties

application.properties
configprop.1=${param1} 
configprop.2=${param2} 

फिर एक प्रोफ़ाइल सेट करें और शायद कुछ सेटिंग्स को सेटिंग्स.xml में सेट करें जो अलग-अलग गुण सेट करता है, भले ही यह एक देव या उत्पादन निर्माण हो। देखें: http://maven.apache.org/guides/introduction/introduction-to-profiles.html

मैं अलग गुण होते हैं निर्धारित करते हैं इस बिल्ड सर्वर, देव या एक उत्पादन तैनाती है पर निर्भर करता है

mvn -Denv = देव || mvn -Denv = dev-build || mvn -Denv = उत्पादन

मेवेन लिंक का एक बहुत अच्छा विवरण है।

3

आप मेवेन असेंबली प्लगइन को आजमा सकते हैं। मैं इसे appassembler प्लगइन के साथ संयोजन के रूप में इस्तेमाल किया।

यदि आप 'आदि' नहीं चाहते हैं, तो आप अपनी कॉन्फ़िगरेशन निर्देशिका के लिए जो भी नाम चाहते हैं उसे इंगित करने के लिए एपसेम्बलर को कॉन्फ़िगर करें। असेंबली प्लगइन अपनी खुद की आउटपुट निर्देशिका में सबकुछ इकट्ठा करता है, इसलिए मैं असेंबली प्लगइन को एपसेम्बलर निर्देशिका से अपने आउटपुट डीआईआर में कॉपी करने के लिए कॉन्फ़िगर करता हूं, फिर मैंने इसे कॉन्फ़िगरेशन फाइलों की प्रतिलिपि बनाई है (मेरा src/main/config में है) अपेक्षित विन्यास डीआईआर में। इसमें कुछ डुप्लिकेशंस है, क्योंकि आप एपसेम्बलर आउटपुट की प्रतिलिपि बना रहे हैं, लेकिन इससे मुझे परेशान नहीं किया गया।

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

अच्छी बात यह है कि आप अपने बाइनरी को निष्पादन योग्य में बदलने के लिए असेंबली प्लगइन को कॉन्फ़िगर भी कर सकते हैं, जिसे मैं एपसेबलर के साथ कैसे करना नहीं देख सकता था। और, यदि आप एपसेम्बलर को बांधते हैं: इकट्ठा करें और असेंबली: पैकेज चरण में एकल लक्ष्य, आपको बस 'एमवीएन पैकेज' करना है, और यह सब कुछ इकट्ठा करता है।

3

लोगों के लिए है जो इस के लिए और अधिक हाल ही में वहाँ आ गए हैं, आवेदन असेंबलर प्लगइन, वैकल्पिक पैरामीटर configurationSourceDirectory और copyConfigurationDirectory का संस्करण 1.1 के बाद से। उन्हें एक उदाहरण में मिल कृपया pom.xml नीचे निकालें:

<configuration> 
    <!-- Set the target configuration directory to be used in the bin scripts --> 
    <configurationDirectory>conf</configurationDirectory> 
    <!-- Copy the contents from "/src/main/config" to the target 
     configuration directory in the assembled application --> 
    <copyConfigurationDirectory>true</copyConfigurationDirectory> 
    <!-- Include the target configuration directory in the beginning of 
     the classpath declaration in the bin scripts --> 
    <includeConfigurationDirectoryInClasspath> 
    true 
    </includeConfigurationDirectoryInClasspath> 
... 
</configuration> 

अधिक जानकारी है here

0

मैं मैं क्या लगता है कि आपके सवाल, या कम से कम एक बहुत ही इसी तरह के सवाल यह है कि करने के लिए एक जवाब की तलाश में गया था। मेवेन आपको maven-resources-plugin का उपयोग कर संसाधनों के लिए निर्देशिका निर्दिष्ट करने की अनुमति देता है। मेरे पास मेरी संसाधन निर्देशिका में से एक में कुछ कॉन्फ़िगरेशन फ़ाइलें हैं I मैंने देखा है कि उन फ़ाइलों की प्रतियों को उस फ़ाइल/निर्देशिका में डालकर जो आप उल्लेख करते हैं (जो मेरे क्लासस्पैट की शुरुआत में है) मैं उन फ़ाइलों में रन टाइम पर उपयोग के लिए मूल्य बदल सकता हूं। मैं फिर डिफ़ॉल्ट रूप से मेरी संसाधन निर्देशिका से सब कुछ की प्रतियों के साथ बनाया गया आदि/निर्देशिका बनाना चाहता था। मेवेन-संसाधन-प्लगइन से copy-resources लक्ष्य ने मुझे ऐसा करने की अनुमति दी। उदाहरणों से यह स्टांजा> बाएं साइडबार पर संसाधनों को कॉपी करें (मैं इस पोस्ट में 2 लिंक तक सीमित हूं) यह मेरे लिए क्या किया गया है:

<project> 
    ... 
    <build> 
    <plugins> 
     <plugin> 
     <artifactId>maven-resources-plugin</artifactId> 
     <version>2.6</version> 
     <executions> 
      <execution> 
      <id>copy-resources</id> 
      <!-- here the phase you need --> 
      <phase>validate</phase> 
      <goals> 
       <goal>copy-resources</goal> 
      </goals> 
      <configuration> 
       <outputDirectory>${basedir}/target/extra-resources</outputDirectory> 
       <resources>   
       <resource> 
        <directory>src/non-packaged-resources</directory> 
        <filtering>true</filtering> 
       </resource> 
       </resources>    
      </configuration>    
      </execution> 
     </executions> 
     </plugin> 
    </plugins> 
    ... 
    </build> 
    ... 
</project> 
संबंधित मुद्दे

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