【发布时间】:2016-09-18 16:42:22
【问题描述】:
我尝试构建基于多个 maven 模块的 Web 应用程序。其中一个模块称为“web”,它单独负责打包应使用 tomcat7-maven-plugin 部署到 tomcat 的战争。我在 parent.pom 中定义了以下模块:
- 常见
- 坚持
- 持久性嵌入
- 服务
- 休息
- 网络
所有这些都合并为一个web-application-war,web模块已将打包设置为war。问题是,当我运行 mvn tomcat7:redeploy 时,我的 war 文件会一遍又一遍地为每个子模块(和主父模块)部署,这会导致 7 个部署。显然,这不是应该的样子。 tomcat7-maven-plugin 配置目前如下所示:
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<ignorePackaging>true</ignorePackaging>
<url>http://localhost:8080/manager/text</url>
<server>tomcatServer</server>
<path>/webapp</path>
<warFile> /home/username/dev/maven-multimodule-example/web/target/maven-multimodule-example-1.0-SNAPSHOT.war</warFile>
<username>admin</username>
<password>password</password>
</configuration>
</plugin>
如您所见,我需要指定 warFile(这不是解决方案,而是 hack,因为我不能使用 ${project.basedir} 会导致子模块目录)使其工作.
但是,如果我使用 mvn tomcat7:run 运行 Web 应用程序,它看起来相当不错,因为插件跳过了其他非战争构建模块。
如何配置插件以仅部署一次war文件的正确方式?
【问题讨论】:
-
你在哪里配置了tomcat插件?哪个 POM,POM 中的哪个部分?
-
在 main-parent-pom 中