2012-08-14 10 views
18

मैं Tomcat like is shown here में एक समय में केवल एक ही परियोजना चलाने के लिए mvn tomcat7-maven-plugin:run -am -pl :foo का उपयोग कर रहा हूं। अब मैं एक ही बंदरगाह के तहत कई मॉड्यूल चलाने के लिए चाहता हूं लेकिन विभिन्न संदर्भ। उदाहरण के लिए, मैं करना चाहते हैं: tomcat7-maven-plugin:run प्लगइन के साथ यह संभव हैमैवेन प्लगइन tomcat7 का उपयोग कैसे करें: एकाधिक संदर्भों (WARs) के साथ चलाएं?

<project><!-- ... --> 
    <build><!-- ... --> 
     <pluginManagement> 
      <plugins> 
       <plugin> 
        <groupId>org.apache.tomcat.maven</groupId> 
        <artifactId>tomcat7-maven-plugin</artifactId> 
        <version>2.0-SNAPSHOT</version> 
        <configuration> 
         <path>/</path> 
         <port>8080</port> 
         <addContextWarDependencies>true</addContextWarDependencies> 
         <addWarDependenciesInClassloader>true</addWarDependenciesInClassloader> 
         <warSourceDirectory>${project.build.directory}/${project.build.finalName}/</warSourceDirectory> 
        </configuration> 
        <dependencies> 
         <dependency> 
          <groupId>${project.groupId}</groupId> 
          <artifactId>bar</artifactId> 
          <version>${project.version}</version> 
          <type>war</type> 
          <scope>tomcat</scope> 
         </dependency> 
        </dependencies> 
       </plugin> 
      </plugins> 
     </pluginManagement> 
    </build> 
    <pluginRepositories> 
     <pluginRepository> 
      <id>apache.snapshots</id> 
      <name>Apache Snapshots</name> 
      <url>http://repository.apache.org/content/groups/snapshots-group/</url> 
      <releases> 
       <enabled>false</enabled> 
      </releases> 
      <snapshots> 
       <enabled>true</enabled> 
      </snapshots> 
     </pluginRepository> 
    </pluginRepositories> 
</project> 

:

/ => foo.war 
/bar => bar.war 

यहाँ एक उदाहरण pom.xml झलकी है कि मैं के साथ काम कर रहा है क्या है? मैं इसे अच्छी तरह से खेलने के लिए सही वाक्यविन्यास खोजने के लिए संघर्ष कर रहा हूं। जब मैं इसे चलाने के लिए maven कमांड चलाता हूं, तो यह केवल प्रोजेक्ट पदानुक्रम में पाता है। और यदि मैं उन्हें <fork>true</fork> या स्पष्ट रूप से विभिन्न टर्मिनल से चलाता हूं तो मुझे "java.net.BindException: पता पहले से उपयोग में है: 8080"।

उत्तर

1

उपयोग की तरह कुछ

<configuration> 
    <webapps> 
     <webapp> 
     <groupId>com.company</groupId> 
     <artifactId>mywebapp</artifactId> 
     <version>1.0</version> 
     <type>war</type>  
     </webapp> 
    </webapps> 
    </configuration> 
+0

मुझे लगता है कि वर्तमान मॉड्यूल के भीतर रूट के रूप में चलने वाले संदर्भ को परिभाषित करने के लिए कॉन्फ़िगर का एक हिस्सा है? यानी, यह मेरे "bar.war" को "/ bar" के रूप में "foo.war" के pom.xml में "/" के रूप में जोड़ने का तरीका होगा? यह निर्भरताओं के कारण सीधे काम नहीं करता है लेकिन मैं अभी भी इसके साथ खेल रहा हूं। – mckamey

+0

मुझे "bar.war" की निर्भरताओं को संभालने के लिए यह प्रतीत नहीं होता है। मैंने उन्हें इस http://stackoverflow.com/a/9928987/43217 की तरह स्पष्ट रूप से जोड़ने की कोशिश की है लेकिन कोई भाग्य नहीं है। – mckamey

+0

इसके अलावा, अगर मैं "bar.war" को मॉड्यूल में स्कोप "टोमकैट" की निर्भरता के रूप में जोड़ने का प्रयास करता हूं, तो यह पहले बनाता है और tomcat7: रन कमांड इसके बजाए इसे निष्पादित करने का प्रयास करता है। – mckamey

19

के रूप में यह पहले से ही सुझाव दिया गया था, प्लगइन विन्यास की <webapps> अनुभाग का उपयोग, लेकिन हर webapp के लिए अतिरिक्त पैरामीटर <asWebapp>true</asWebapp> जोड़ने के लिए, अर्थात्:

<webapps> 
    <webapp> 
    <groupId>com.company</groupId> 
    <artifactId>mywebapp</artifactId> 
    <version>1.0</version> 
    <type>war</type>  
    <asWebapp>true</asWebapp> 
    </webapp> 
    <webapp> 
    <groupId>com.company</groupId> 
    <artifactId>mywebapp2</artifactId> 
    <version>2.0</version> 
    <type>war</type>  
    <asWebapp>true</asWebapp> 
    </webapp> 
</webapps> 

इन अतिरिक्त webapps तैनात किया गया है डिफ़ॉल्ट रूप से ${artifactId} संदर्भ पथ के साथ।

ऐसा लगता है कि इस पैरामीटर के बिना अतिरिक्त वेबपैप्स चुपचाप त्याग दिए जाते हैं जब आप mvn tomcat7:run (स्थिर संस्करण 2.0 पर प्रयास किए गए) जैसे कुछ चलाते हैं। Related Jira issue बताता है कि यह "पिछड़ा संगतता" के लिए किया गया था।

+0

अरे - इस पर सिर्फ एक नोट जो किसी और की मदद कर सकता है ... वासिल द्वारा इस सलाह ने मेरी समस्या हल की, लेकिन मुझे काम करने से पहले 2.0-बीटा -1 से 2.0 में tomcat7-maven-plugin को अपग्रेड करना पड़ा। उस प्री-2.0 रिलीज में एक बग था जो वेबपैप्स को काम करने से रोक रहा था: https://issues.apache.org/jira/browse/MTOMCAT-169 –

+0

क्या इस दृष्टिकोण के साथ वेबैप के संदर्भ पथ को ओवरराइड करने का कोई तरीका है ? – hoshposh

+4

@hoshposh मुझे प्लगइन की कक्षा 'org.apache.tomcat.maven.common.config.AbstractWebapp' में' contextPath' पैरामीटर 'दिखाई देता है, इसलिए ' ... /mypath जैसे कुछ जोड़ना ...' काम। –

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