maven - 禁用多模块构建中的模块的专用目标

时间:2012-10-25 08:31:51

标签: java eclipse maven build

我使用多模块构建文件来触发构建相当复杂的java项目。现在我想创建eclipse项目文件 - 但不是所有模块。是否可以在pom上定义它忽略 eclipse:eclipse目标?

我用mvn eclipse:eclipse调用的多模块pom的模块定义如下:

<modules>
  <module>../project1/generate/pom.xml</module>
  <module>../project1/pom.xml</module>
  <module>../project2/generate/pom.xml</module>
  <module>../project2/pom.xml</module>
  <!-- and many more projects with or without generate sub modules -->
</modules>

当然,pom不仅仅是创建eclipse项目所需要的,因此我不能只删除导致该目标出现问题的模块。

生成模块上执行询问:eclipse:eclipse的原因将更改清单文件中的某些属性,导致下一个构建中断。而且我已经厌倦了一直手动纠正它们;)

2 个答案:

答案 0 :(得分:1)

您可以使用Maven Profiles

删除已定义的模块并添加如下内容:

<profiles>
    <profile>
        <id>full</id>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
        <modules>
            <module>../project1/generate/pom.xml</module>
            <module>../project1/pom.xml</module>
            <module>../project2/generate/pom.xml</module>
            <module>../project2/pom.xml</module>
        </modules>
    </profile>
    <profile>
        <id>eclipse</id>
        <modules>
            <module>../project1/pom.xml</module>
            <module>../project2/pom.xml</module>
        </modules>
    </profile>
</profiles>

然后当你想要生成eclipse设置时:

mvn -Peclipse eclipse:eclipse

答案 1 :(得分:1)

您可以使用Maven Advanced Reactor Options(自Maven 2.1起):

例如,仅定位project1和project2:

mvn --projects project1, project2 eclipse:eclipse

定位project1及其所有依赖项:

mvn --projects project1 --also-make eclipse:eclipse

这提供了一种反应多重项目的标准化方法,不需要在pom.xml中进行修改。