首页 文章

tomcat-maven-plugin,只有多个模块构建一个战争

提问于
浏览
0

我尝试基于多个maven模块构建Web应用程序 . 其中一个模块称为“web”,它负责打包一个应该使用tomcat7-maven-plugin部署到tomcat的war . 我在parent.pom中定义了以下模块:

  • 常见

  • 持久性

  • 持久性嵌入式

  • 服务

  • 休息

所有这些都被组合成一个web-application-war,web模块已经将包装设置为战争 . 问题是,当我运行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,因为我不能使用$ 来导致submodule-dir)使它工作 .

但是,如果我使用mvn tomcat7:run运行Web应用程序,它看起来相当不错,因为插件会跳过其他非战争构建模块 .

如何才能以正确的方式配置插件以仅部署war文件一次?

2 回答

  • 0

    父POM的 <build> 部分中的每个配置都将被继承,从而在所有子模块中执行 . 因此,如果您只想部署一次,请将其添加到一个POM(例如Web POM) .

  • 1

    感谢dunni 's help I noticed my missunderstanding of how multimodule projects are built. Now I'已将插件配置放在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>
    

相关问题