在多模块项目中仅为一个模块运行Maven目标

时间:2015-06-19 17:10:39

标签: java maven java-ee jboss

我有一个有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。我怎样才能做到这一点?

2 个答案:

答案 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