2013-04-26 10 views
6

मैं maven के लिए नए और मैं अलग वातावरण का उपयोग प्रोफाइलसशर्त रूप से फ़ाइलों की प्रतिलिपि बनाने के लिए मैवेन बिल्ड प्रोफाइल कैसे बना सकता हूं?

के लिए युद्ध फ़ाइलों का निर्माण करने के pom.xml बनाने के लिए कोशिश कर रहा हूँ तो मैं निर्माण लक्ष्य

<build> 
<finalName>myacct_okc</finalName> 
<resources> 
    <resource> 
    <directory>src/main/java</directory> 
    <excludes> 
     <exclude>**/*.java</exclude> 
    </excludes> 
    </resource> 
    <resource> 
    <directory>src/main/resources</directory> 
    </resource> 
    <resource> 
    <directory>config/${environment}</directory> 
    </resource> 
</resources> 
</build> 

बनाया और फिर प्रत्येक परिवेश के लिए प्रोफाइल बनाया

<profiles> 
<profile> 
    <id>local</id> 
    <activation> 
    <activeByDefault>false</activeByDefault> 
    </activation> 
    <properties> 
    <environment>local</environment> 
    </properties> 
</profile> 
<profile> 
    <id>jboss</id> 
    <properties> 
    <environment>jboss</environment> 
    </properties> 
</profile> 
<profile> 
    <id>dev</id> 
    <properties> 
    <environment>dev</environment> 
    </properties> 
</profile> 

और मैं एक env के लिए एक config फ़ोल्डर बनाने

0,123,
project root 
|-- src 
| |-- main 
| | |-- java 
| | |-- resources 
| | | |-- config.xml 
| | | +-- config.properties 
| | |-- webapp 
| | | |-- META-INF 
| | | | +--context.xml 
| | |-- config 
| | | |-- local 
| | | | |--config.properties 
| | | | +--config.xml 
| | | |-- jboss 
| | | | |--config.properties 
| | | | +--config.xml 
| | | +-- dev 
| | | | |--config.properties 
| | | | +--config.xml 
+--pom.xml 

अब जब मैं इस pom.xml को किसी भी प्रोफाइल के साथ चलाता हूं उदा। jboss, फ़ाइलों को कॉन्फ़िगर/jboss फ़ोल्डर कॉपी नहीं किया जा रहा है (या मेरा मतलब है कि src/main/संसाधनों में फ़ाइलों को प्रतिस्थापित नहीं किया जा रहा है)।

जब मैंने मैवेन बिल्ड पर डीबग सक्षम किया तो मैं प्रतिलिपि प्राप्त करने वाली प्रतिलिपि देख सकता हूं।

[DEBUG] resource with targetPath null 
directory C:\Projects\workspace\myaccount_build_4\myaccount\config\jboss 
excludes [] 
includes [] 
[DEBUG] ignoreDelta true 
[INFO] Copying 2 resources 
[DEBUG] file config.xml has a filtered file extension 
[DEBUG] copy C:\Projects\workspace\myaccount_build_4\myaccount\config\jboss\config.xml to C:\Projects\workspace\myaccount_build_4\myaccount\target\classes\config.xml 
[DEBUG] file config.properties has a filtered file extension 
[DEBUG] copy C:\Projects\workspace\myaccount_build_4\myaccount\config\jboss\META-INF\config.properties to C:\Projects\workspace\myaccount_build_4\myaccount\target\classes\META-INF\config.properties 

लेकिन यह फ़ाइलों को प्रतिस्थापित नहीं कर रहा है। फ़ाइलें अभी भी src/main/संसाधनों के समान हैं।

Maven संस्करण 3.0.4

है

कोई मेरी मदद कर सकते मैं गलत क्या कर रहा हूँ?

मैंने इस question पर देखा है। यह एक समाधान प्रदान करता है लेकिन मैं फ़ाइलों को ओवरराइड करना चाहता हूं बल्कि उन्हें छोड़कर और फिर प्रतिलिपि बनाना चाहता हूं।

+0

जोड़ा इस Maven से दूसरे बुनियादी उदाहरण है: http://maven.apache.org/guides/mini/guide-building-for-different- environments.html – Lunf

उत्तर

6

यह काम करने के बाद मैं filtering= true

<build> 
<finalName>myacct_okc</finalName> 
<resources> 
<resource> 
    <directory>src/main/java</directory> 
    <excludes> 
    <exclude>**/*.java</exclude> 
    </excludes> 
</resource> 
<resource> 
    <filtering>true</filtering> 
    <directory>src/main/resources</directory> 
</resource> 
    <resource> 
    <filtering>true</filtering> 
    <directory>config/${environment}</directory> 
    </resource> 
    </resources> 
</build> 
+5

फ़िल्टरिंग मैवेन संपत्ति मूल्यों वाली फ़ाइलों में $ (कुछ) की जगह लेता है –

7

मेरा मानना ​​है कि आपको अपने संसाधनों को एक प्रति-संसाधन निष्पादन के अंदर, मैवेन-संसाधन-प्लगइन में जोड़ना होगा।

<plugin> 
    <artifactId>maven-resources-plugin</artifactId> 
    <executions> 
    <execution> 
     <id>copy-config</id> 
     <phase>copy-resources</phase> 
     <goals> 
     <goal>copy-resources</goal> 
     </goals> 
     <configuration> 
     <outputDirectory>${project.build.outputDirectory}</outputDirectory> 
     <resources> 
      <resource> 
      <directory>src/main/java</directory> 
      <excludes> 
       <exclude>**/*.java</exclude> 
      </excludes> 
      </resource> 
      <resource> 
      <directory>src/main/resources</directory> 
      </resource> 
      <resource> 
      <directory>config/${environment}</directory> 
      </resource> 
     </resources> 
     </configuration> 
    </execution> 
    </executions> 
</plugin> 
+0

हम मेवेन-संसाधन प्लगइन का उपयोग नहीं कर रहे हैं – NullPointerException

+4

आप अपने पीओएम में स्पष्ट रूप से इसका उपयोग नहीं कर रहे हैं, लेकिन यह मूल मेवेन प्लगइन है और इसका उपयोग आपके निर्माण जीवन चक्र के दौरान पूरी तरह से किया जा रहा है। प्लगइन को कॉन्फ़िगर करना प्लगइन को अपने कस्टम स्रोत स्थानों से संसाधनों की प्रतिलिपि बनाने का एक तरीका है। – bdkosher

+0

पूर्ण जीवन बचाओ! मैं प्रोफ़ाइल के आधार पर नामकरण के संदर्भ में इस बारे में सोच रहा था लेकिन यह पता नहीं लगा कि यह कैसे करना है। यह बहुत अधिक सुरुचिपूर्ण है। धन्यवाद –

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

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