2011-05-25 17 views
31

मैं अपने आवेदन के लिए मेरी pom.xml में तीन प्रोफ़ाइल है में प्रोफाइल के नाम पर आधारित फ़ाइल .war उत्पादन का नाम बदलने के लिए कैसे ...Maven में - उपयोग

  1. देव (एक पर उपयोग के लिए डेवलपर)
  2. क्यूए (हमारी आंतरिक गुणवत्ता आश्वासन सर्वर पर उपयोग के लिए)
  3. prod (उत्पादन)।

जब हम चलाने हमारे Maven एक ही नाम के साथ एक युद्ध फ़ाइल ouput तीनों को प्रोफ़ाइल बनाने। मैं $profilename-somearbitraryname.war

कोई भी विचार आउटपुट करना चाहता हूं?

+0

मैं वसंत प्रोफ़ाइल का उपयोग की सिफारिश करेंगे ('org.springframework.context .support.PropertySourcesPlaceholderConfigurer') उन चर के लिए जो पर्यावरण के आधार पर एप्लिकेशन के लिए बदलते हैं। इस तरह आप एक बार निर्माण कर सकते हैं और अगले वातावरण में फिर से इसे फिर से तैनात कर सकते हैं। यह आपके मामले के लिए प्रासंगिक नहीं हो सकता है .. – worldsayshi

उत्तर

56

आपने अपने आप को सही उत्तर दिया है:

<profiles> 
    <profile> 
     <id>dev</id> 
     <properties> 
      <rp.build.warname>dev</rp.build.warname> 
     </properties> 
    </profile> 
    <profile> 
     <id>qa</id> 
     <properties> 
      <rp.build.warname>qa</rp.build.warname> 
     </properties> 
    </profile> 
    <profile> 
     <id>prod</id> 
     <properties> 
      <rp.build.warname>prod</rp.build.warname> 
     </properties> 
    </profile> 
</profiles> 

लेकिन वहाँ युद्ध नाम को फिर से परिभाषित करने के लिए एक सरल तरीका है:

<build> 
    <finalName>${rp.build.warname}-somearbitraryname</finalName> 
    <!-- ... --> 
</build> 

नहीं maven-war-plugin की जरूरत है।

+2

अच्छी टिप, लेकिन पैरा मेवेन डॉक्स, प्रोफाइल का उपयोग अलग-अलग आउटपुट के उत्पादन के लिए नहीं किया जाना चाहिए। अन्यथा, जैसा कि मैंने देखा है, संकलन अनिवार्य रूप से जटिल हो जाते हैं। –

24

जवाब आसान था ...

इस तरह प्रत्येक प्रोफ़ाइल में एक संपत्ति निर्धारित करें ...

<profile> 
    <id>qa</id> 
    <properties> 
     <rp.build.warname>ourapp-qa</rp.build.warname> 
    </properties> 
</profile> 

फिर अपने प्लग इन में जोड़ने ...

<plugin> 
    <artifactId>maven-war-plugin</artifactId> 
    <version>2.1.1</version> 
    <configuration> 
     <packagingExcludes>WEB-INF/web.xml</packagingExcludes> 
     <warName>${rp.build.warname}</warName> 
    </configuration> 
</plugin> 
+2

नोट: यह कॉन्फ़िगरेशन अब मैवेन-वॉर-प्लगइन 3.0.0 में उपलब्ध नहीं है। – Barett

0

Maven में आप <module>

में <bundleFileName> का उपयोग करना चाहिए आप यह सुनिश्चित करने के लिए अपने मॉड्यूल rewritted कर रहे हैं इस लिंक का अनुसरण करना चाहिए: http://maven.apache.org/plugins/maven-ear-plugin/examples/customizing-a-module-filename.html

<build> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-ear-plugin</artifactId> 
       <version>2.10.1</version> 
       <configuration> 
       [...] 
        <modules> 
         <ejbModule> 
          <groupId>artifactGroupId</groupId> 
          <artifactId>artifactId</artifactId> 
          <bundleFileName>anotherName-1.2.3.jar</bundleFileName> 
         </ejbModule> 
        </modules> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build>