2011-09-08 15 views
9

पर आधारित संसाधन फ़ाइल शामिल करें मैं एक एंट वेबपैप प्रोजेक्ट को मैवेन में परिवर्तित कर रहा हूं। मेरे पास यह अधिकतर काम कर रहा है, लेकिन मैं प्रोफ़ाइल के आधार पर विभिन्न स्रोतों से कुछ संसाधन फ़ाइलों की प्रतिलिपि बनाने का तरीका जानने का प्रयास कर रहा हूं।मेवेन: प्रोफ़ाइल

मेरे पास src/main/resources/persistence-{dev, prod}.xml है। इनमें से एक को युद्ध फ़ाइल में WEB-INF/classes/META-INF/persistence.xml के रूप में शामिल करने की आवश्यकता है।

मैं dev संस्करण सक्रिय होने पर dev संस्करण की प्रतिलिपि बनाना चाहता हूं, और प्रोड संस्करण सक्रिय होने पर प्रोड संस्करण।

+1

मुझे नहीं लगता कि मैवेन संसाधन प्लगइन उसकी समस्या का समाधान करता है क्योंकि जहां तक ​​मुझे पता है कि यह प्लगइन केवल फाइलों को शामिल या बढ़ा सकता है, कॉपी और उनका नाम बदल नहीं सकता है। – allaf

उत्तर

8

बस http://maven.apache.org/plugins/maven-resources-plugin/examples/include-exclude.html जैसे मेवेन संसाधन प्लगइन का उपयोग करें और प्रोफ़ाइल में फ़ाइल नाम या एक्सटेंशन सेट के लिए एक संपत्ति है।

+4

आपका उत्तर persistence.xml फ़ाइल का नाम बदलने में शामिल नहीं है। – mwalter

+5

अलग-अलग स्रोत फ़ाइल नाम होने के बजाय, आपके पास अलग-अलग फ़ोल्डर्स हो सकते हैं जहां से आप संसाधन लोड करते हैं और उसे संपत्ति के रूप में रखना पड़ता है, इसलिए आपको फ़ाइल का नाम बदलने की आवश्यकता नहीं है .. –

+0

@ManfredMoser - मुझे लगता है कि कस्टम गुणों का उपयोग एक 'दृढ़ता' .xml' उचित तरीका है। – JimHawkins

6

यदि आप 3 अलग persistence.xml फ़ाइलों के प्रतिमान से शादी नहीं कर रहे हैं और एक या दूसरे को चुनिंदा रूप से प्रतिलिपि बना रहे हैं, तो आप इस तरह फ़िल्टरिंग के साथ मेवेन प्रोफाइल का उपयोग कर सकते हैं (बस इसे दूसरे दिन लागू किया गया और आज आपकी पोस्ट में आया):

persistence.xml में:

<property name="hibernate.show_sql" value="${hibernate.debug}" /> 
<property name="hibernate.format_sql" value="${hibernate.debug}" /> 

pom.xml में एक प्रोफ़ाइल बनाने और चर को परिभाषित:

<profiles> 
    <profile> 
    <id>hib-debug</id> 
    <properties> 
     <hibernate.debug>true</hibernate.debug> 
    </properties> 
    </profile> 
</profiles> 

एक डिफ़ॉल्ट को परिभाषित जब आप एक प्रोफ़ाइल निर्दिष्ट किए बिना निर्माण के लिए टी:

<properties> 
    <hibernate.debug>false</hibernate.debug> 
</properties> 

और .... सुनिश्चित करें कि आप संसाधन को छानने पर बारी बनाने:

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

तो फिर तुम mvn -Phib-डिबग और देखा के साथ निर्माण! प्रतिस्थापन किया जाता है।

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