使用 mvn tomcat7:run 运行两个 maven 模块



我有以下项目布局:

web_root
- pom.xml -> packaging: pom
- web_relay
     - pom.xml -> packaging: war
     - src/...
- web_service
     - pom.xml -> packaging: war
     - src/...

web_root pom.xml是超级项目,包含两个modulesweb_relayweb_service

出于未知的原因,有人相当武断地拆分了这些项目。我一直在尝试将这些项目合并到一个 maven 超级项目下。

我可以使用mvn tomcat7:run运行每个web_relayweb_service项目。但是,我需要两者都在同一个tomcat服务器上运行。但是,当我在web_root上运行tomcat7:run时,它只运行两个模块之一的tomcat服务器。

我怎样才能让mvn tomcat7:run来运行两场战争?


如何使用 maven 插件 tomcat7:运行多个上下文 (WAR)? 的方法仅在我单独mvn install依赖项并且不将它们作为modules包含时才有效。如果我确实将它们作为modules包含在内,mvn 将只在它找到的第一个模块中运行tomcat7:run

从虚拟模块运行战争,将所有依赖项列为"webapps"。

即在单个pom中,使用:

<build>
     <plugins>
         <plugin>
                <groupId>org.apache.tomcat.maven</groupId>
                <artifactId>tomcat7-maven-plugin</artifactId>
                <configuration>
                    <skip>true</skip>

并创建一个新模块,一次启动所有依赖项

<build>
     <plugins>
         <plugin>
                <groupId>org.apache.tomcat.maven</groupId>
                <artifactId>tomcat7-maven-plugin</artifactId>
                <configuration>
                    <webapps>
                       <webapp> 
                         <groupId>com.company</groupId> 
                         <artifactId>webapp-1</artifactId> 
                         <version>1.0</version> 
                         <type>war</type>    
                       </webapp> 
                       [Add more]
                    </webapps>
作为替代方案,从长远来看,

也许是一个更好的解决方案,将所有 Web 应用程序打包到单个 EAR(企业归档:https://maven.apache.org/plugins/maven-ear-plugin/)中,这样您也可以通过单个操作将它们部署到生产中。

Tomcat7 不支持 EAR 部署,但 TomEE 支持: http://tomee.apache.org/maven/run-mojo.html还有JBoss:https://docs.jboss.org/jbossas/7/plugins/maven/latest/run-mojo.html

最新更新