由Maven自动上传的不完整WAR

时间:2015-06-30 15:44:23

标签: maven war

为了简化Jave EE应用程序的部署过程,我指示Maven自动将生成的WAR文件复制到应用程序服务器。

的pom.xml:

        <plugin>
            <artifactId>exec-maven-plugin</artifactId>
            <groupId>org.codehaus.mojo</groupId>
            <executions>
                <execution><!-- Run our version calculation script -->
                    <id>Copy to Application Server</id>
                    <phase>generate-sources</phase>
                    <goals>
                        <goal>exec</goal>
                    </goals>
                    <configuration>
                        <executable>${basedir}/copy-to-appserver.sh</executable>
                    </configuration>
                </execution>
            </executions>
        </plugin>

copy-to-appserver.sh:

scp /home/user/.m2/repository/com/wolf/apix/1.0/apix-1.0.war user@srv-web:/opt/wildfly-8.2.0.Final/standalone/deployments/apix.war

不幸的是,这失败了! WAR已成功传输到应用程序服务器,但它与旧代码和新代码混合在一起。我的假设是Maven在仍然处于WAR创建过程中时尝试发送它,因为当我在部署后手动运行复制脚本copy-to-appserver.sh时,一切都可以在应用服务器上正常工作。

我的问题是,我需要更改什么,以便Maven在创建/操作完成时只访问WAR文件?

3 个答案:

答案 0 :(得分:3)

您的插件正在生成源阶段过早执行

通过更改要部署的阶段

在最后阶段运行它
<phase>deploy</phase>

答案 1 :(得分:1)

此外,按照6ton的建议,在正确的阶段运行插件,您可能还需要考虑使用专门用于解决问题的Maven WildFly plugin。这样,你就可以摆脱那个讨厌,讨厌的剧本。

答案 2 :(得分:0)

我建议将构建过程和部署过程分开,因为deploy生命周期阶段旨在将工件上载到远程存储库。