我有一个有4个模块的项目。也就是说,我有一个父项目,父项POM.xml指定了这些模块。
<modules>
<module>Module1-Desktop</module>
<module>Module2-Core</module>
<module>Module3-Web</module>
<module>Module4-EAR</module>
</modules>
Module4-EAR 将 Module3-Web 和 Module2-Core 作为依赖项(而非模块)并生成要部署的EAR到JBoss。
我希望能够构建 Module4-EAR ,但在它之前构建 Module3-Web 和 Module2-Core ,所以它是最新的,并将其部署到JBoss。所以我在父项目中运行以下Maven命令:
mvn --projects Module2-Core,Module3-Web,Module4-EAR clean install jboss:hard-undeploy jboss:hard-deploy
在父POM中,我设置了jboss-maven-plugin,如下所示:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>jboss-maven-plugin</artifactId>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
在Module4-EAR的pom.xml中,我以这种方式设置了jboss-maven-plugin:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>jboss-maven-plugin</artifactId>
<configuration>
<skip>false</skip>
<jbossHome>${env.JBOSS_HOME}</jbossHome>
<serverName>default</serverName>
<unpack>true</unpack>
<fileNames>
<fileName>build/Module4-EAR.ear</fileName>
</fileNames>
</configuration>
</plugin>
问题是我只想将 Module4-EAR.ear 部署到服务器,但 Module3-Web.war 和 Module2 -Core 也已部署。我想在一个命令中执行它,而不是运行2个mvn命令,一个用于“清理安装”项目,另一个用于仅部署EAR。我怎样才能做到这一点?
答案 0 :(得分:0)
如果您只想部署耳朵,请将jboss-maven-plugin添加到Module4-EAR的pom中。所以插件只能在该模块中工作。将部署插件添加到父pom中通常会导致将其执行到所有模块中 - 这通常不是您想要的。
您可以将命令链接到mvn clean install plugin:goal
您使用的插件似乎被JBoss AS7部署插件取代:http://docs.jboss.org/jbossas/7/plugins/maven/latest/(作为旁注)
所以它看起来像mvn clean install jboss-as:deploy
您还可以将执行添加到jboss插件并将其绑定到部署阶段,以便mvn clean deploy
将工件复制到远程存储库并将耳朵部署到jboss中。
使用安装阶段的示例位于:http://docs.jboss.org/jbossas/7/plugins/maven/latest/examples/deployment-example.html
答案 1 :(得分:0)
只需将其添加到我想要执行jboss的唯一项目中:hard-deploy。
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>jboss-maven-plugin</artifactId>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
从父POM.xml中删除了以下代码:
mvn --projects Module2-Core,Module3-Web,Module4-EAR clean install
并将mvn命令更改为:
B