maven-3 - Tomcat Maven 插件和多模块 Maven 项目

标签 maven-3 maven-tomcat-plugin

我们有一个应用程序,直到最近它还是一个 Maven WAR 项目。我们使用 Tomcat Maven 插件在本地开发人员工作站上运行应用程序,使用:

mvn tomcat:run

我们能够在嵌入式 Tomcat 实例运行时更改 JSP 文件,并且更改会很好地显示在 Web 浏览器中。我(从插件文档中)了解到,当使用 tomcat:run 目标时,WAR 会作为动态 Web 应用程序加载,因此 Tomcat 在运行时会在不重新启动的情况下拾取源代码中对 JSP 文件所做的更改。

应用程序已经达到了相当大的规模,我们需要在 Web 项目之外的几个不同地方重用大量的类,因此我们将代码库重构为一个多模块的 Maven 项目。现在的结构是:
parent Maven POM
    |
     ---- artifact1.jar
    |
     ---- artifact2.jar -> depends on artifact1.jar
    |
     ---- artifact3.jar -> depends on artifact1.jar
    |
     ---- artifact4.jar -> depends on artifact2.jar and artifact3.jar
    |
     ---- artifact5.war -> depends on artifact1.jar, artifact2.jar, artifact3.jar and artifact4.jar

重构后,我们无法使用项目根目录中的 tomcat:run 来运行 WAR 项目,因为插件无法检测到 JAR 工件。所以,我们转而使用 tomcat:run-war-only 插件。 WAR 模块现在可以正常启动。

但是,从文档看来,run-war-only 目标似乎将 WAR 文件视为打包的 Web 应用程序。因此,我们现在对 JSP 文件所做的任何更改都不会在运行时被嵌入式 Tomcat 服务器拾取。对于 JSP 文件的每次更改,我们都必须重新启动服务器。

在这个多模块 Maven 设置中,我们有没有办法将 WAR 项目作为动态 Web 应用程序运行,以便 Tomcat 至少可以在不重新启动的情况下获取对 JSP 文件的更改?

最佳答案

只需先执行 mvn install 然后

mvn -pl artifact5 tomcat:run 

关于maven-3 - Tomcat Maven 插件和多模块 Maven 项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13263114/

相关文章:

maven - "mvn install"应该在集成测试时失败吗?

java - Maven 多模块不重新加载资源

jmx - 在 tomcat7-maven-plugin 上启用 jmx

java - Maven 多模块 : error assembling WAR: webxml attribute is required

Maven Tomcat 插件 : can't deploy to server

maven - Apache Tomcat Maven 插件 uriEncoding 不适用于 https

java - 在 assembly-plugin 构建(具有依赖性)jar 中包含 Maven 配置文件名称

Maven 部署失败?

java - 弗林克 : no suitable method found for process