2009-07-27 8 views
8

मेरे पास दो युद्ध हैं जिन्हें मैं टॉमकैट प्लगइन का उपयोग करके दो मेवेन परियोजनाओं में तैनात करता हूं। मैं इसे एक कदम में करना चाहता हूं और एक एकल मैवेन प्रोजेक्ट में एक से अधिक युद्ध तैनात करने में सक्षम हूं। मैं यह कैसे कर सकता हूं? कोई सुझाव?मैवेन में टॉमकैट प्लगइन का उपयोग करके मैं कई युद्ध कैसे तैनात कर सकता हूं?

उत्तर

6

मैं इसका परीक्षण करने की स्थिति में नहीं हूं, लेकिन दो दृष्टिकोण हैं जिन पर मैं सोच सकता हूं। या तो आपके लिए काम कर सकता है।

विकल्प 1:

परियोजनाओं में से एक में आप बिल्ला प्लगइन के लिए विन्यास परिभाषित कर सकते हैं। नीचे स्निपेट में दो निष्पादन परिभाषित किए गए हैं, दोनों पूर्व-एकीकरण-परीक्षण चरण से बंधे हैं (यह ऐसा करने का सबसे अच्छा चरण नहीं हो सकता है, लेकिन यह एक अच्छा प्रारंभिक बिंदु प्रतीत होता है क्योंकि युद्ध पैक किया जाएगा)। प्रत्येक निष्पादन इसकी कॉन्फ़िगरेशन की युद्धफाइल संपत्ति में परिभाषित युद्ध को तैनात करेगा।

<project> 
    ... 
    <build> 
    ... 
    <plugins> 
     ... 
     <plugin> 
     <groupId>org.codehaus.mojo</groupId> 
     <artifactId>tomcat-maven-plugin</artifactId> 
     <version>1.0-beta-1</version> 
     <executions> 
      <execution> 
      <id>deploy1</id> 
      <phase>pre-integration-test</phase> 
      <configuration> 
       <warFile>path/to/my/warFile1.war</warFile> 
      </configuration> 
      <goals> 
       <goal>deploy</goal> 
      </goals> 
      </execution> 
      <execution> 
      <id>deploy2</id> 
      <phase>pre-integration-test</phase> 
      <configuration> 
       <warFile>path/to/my/warFile2.war</warFile> 
      </configuration> 
      <goals> 
       <goal>deploy</goal> 
      </goals> 
      </execution> 
     </executions> 
     </plugin> 
     ... 
    </plugins> 
    ... 
    </build> 
    ... 
</project> 

विकल्प 2: यह शायद बेहतर तरीका है। प्रत्येक युद्ध में एक निष्पादन को परिभाषित करें (आप युद्ध के तत्व को छोड़ सकते हैं क्योंकि डिफ़ॉल्ट का उपयोग किया जा सकता है)। फिर आप प्रत्येक युद्ध परियोजना के संदर्भ में एक मॉड्यूल घोषणा के साथ एक तीसरी परियोजना को परिभाषित कर सकते हैं। जब अभिभावक बनाया जाता है तो दोनों युद्ध बनाए जाएंगे और युद्ध तैनात किए जाएंगे।

तीसरे परियोजना के लिए मॉड्यूल घोषणा:

<modules> 
    <module>relative/path/to/war1</module> 
    <module>relative/path/to/war2</module> 
<modules> 

और प्रत्येक युद्ध परियोजना के लिए config:

<project> 
    ... 
    <build> 
    ... 
    <plugins> 
     ... 
     <plugin> 
     <groupId>org.codehaus.mojo</groupId> 
     <artifactId>tomcat-maven-plugin</artifactId> 
     <version>1.0-beta-1</version> 
     <executions> 
      <execution> 
      <id>deploy</id> 
      <phase>pre-integration-test</phase> 
      <goals> 
       <goal>deploy</goal> 
      </goals> 
      </execution> 
     </executions> 
     </plugin> 
     ... 
    </plugins> 
    ... 
    </build> 
    ... 
</project> 

Maven कुछ गुण आप निरपेक्ष पथ से बचने के लिए उपयोग कर सकते हैं।

${maven.repo.local} will resolve to the local repository 
${project.basedir} is the project directory (the root of the project) 
${project.build.directory} is the build directory (default is "target") 
${project.build.outputDirectory} is the directory where compilation output goes (default is "target/classes") 
+0

हे, आप अपने सुझाव के लिए बहुत बहुत धन्यवाद के साथ-साथ एक "सुपर युद्ध 'बना सकते हैं और है कि तैनात कर सकते हैं,। मेरे पास एक फॉलोअप प्रश्न था। युद्ध फ़ाइल के लिए पूर्ण पथ देने के बजाय पोम में एक तरीका है कि युद्ध फ़ाइल को स्थानीय भंडार या दूरस्थ भंडार पथ से उठाया जा सकता है। – nagl

+0

मैंने उत्तर में कुछ गुण जोड़े हैं, आप $ {property}/path/to/संदर्भ का उपयोग करके एक सापेक्ष पथ निर्दिष्ट कर सकते हैं –

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

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