为了简化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文件?
答案 0 :(得分:3)
您的插件正在生成源阶段过早执行
通过更改要部署的阶段
在最后阶段运行它<phase>deploy</phase>
答案 1 :(得分:1)
此外,按照6ton的建议,在正确的阶段运行插件,您可能还需要考虑使用专门用于解决问题的Maven WildFly plugin。这样,你就可以摆脱那个讨厌,讨厌的剧本。
答案 2 :(得分:0)
我建议将构建过程和部署过程分开,因为deploy
生命周期阶段旨在将工件上载到远程存储库。