【问题标题】:tomcat-maven-plugin with multiple modules building one war only带有多个模块的 tomcat-maven-plugin 仅构建一场战争
【发布时间】: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 中

标签: java maven tomcat7


【解决方案1】:

父 POM 的 &lt;build&gt; 部分中的每个配置都将被继承并在所有子模块中执行。因此,如果您只想部署一次,请将其添加到一个 POM(例如 web POM)中。

【讨论】:

    【解决方案2】:

    感谢 dunni 的帮助,我注意到我对如何构建多模块项目的误解。现在我已经将插件配置放在 web 模块中并添加了一个执行,绑定到安装阶段,这样我就可以重建整个项目并将其部署到我的 tomcat 中。显然,maven 负责模块的right execution order

    <plugin>
        <groupId>org.apache.tomcat.maven</groupId>
        <artifactId>tomcat7-maven-plugin</artifactId>
        <version>2.2</version>
        <configuration>
            <url>http://localhost:8080/manager/text</url>
            <server>tomcatServer</server>
            <path>/webapp</path>
            <warFile>${project.basedir}/target/${project.parent.artifactId}-${project.parent.version}.war</warFile>
            <username>admin</username>
            <password>password</password>
        </configuration>
        <executions>
            <execution>
                <id>redeployafterinstall</id>
                <phase>install</phase>
                <goals>
                    <goal>redeploy</goal>
                </goals>
            </execution>
        </executions>
    </plugin>
    

    【讨论】:

      猜你喜欢
      • 2013-03-31
      • 1970-01-01
      • 2014-07-01
      • 2013-03-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多