我有以下项目布局:
web_root
- pom.xml -> packaging: pom
- web_relay
- pom.xml -> packaging: war
- src/...
- web_service
- pom.xml -> packaging: war
- src/...
我web_root
pom.xml
是超级项目,包含两个modules
:web_relay
和web_service
。
出于未知的原因,有人相当武断地拆分了这些项目。我一直在尝试将这些项目合并到一个 maven 超级项目下。
我可以使用mvn tomcat7:run
运行每个web_relay
和web_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