构建期间不会跳过Maven子模块

时间:2014-03-20 13:28:21

标签: maven

使用maven 3.1.1

在我的父母pom中我有:

    <groupId>com.samples</groupId>
    <artifactId>parent</artifactId>
    <version>1.0.0-SNAPSHOT</version>
    <packaging>pom</packaging>
    <name>Parent</name>
    <modules>
        <module>a</module>
        <module>b</module>
        <module>c</module>
    </modules>

    <profiles>
        <profile>
            <id>skip-c</id>
            <modules>
                   <module>a</module>
                   <module>b</module>
                </modules>
        </profile>
...

但模块c仍在使用我构建的构建:

mvn clean package -Pskip-c

如何在构建父项目时跳过子模块?

3 个答案:

答案 0 :(得分:2)

您的问题是您的完整模块列表始终处于活动状态。您可以使用默认配置文件。

<groupId>com.samples</groupId>
<artifactId>parent</artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging>pom</packaging>
<name>Parent</name>

<profiles>
    <profile>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
        <modules>
            <module>a</module>
            <module>b</module>
            <module>c</module>
        </modules>
    </profile>
    <profile>
        <id>skip-c</id>
        <modules>
            <module>a</module>
            <module>b</module>
        </modules>
    </profile>
</profiles>

答案 1 :(得分:0)

除了julschis评论一些细节:

配置文件不会替换pom的正常非配置文件内容。因此,在使用您的个人资料时,您会从正常的pom中获得a,b和c,以及从个人资料中获得a和b,因此您的个人资料无用。

您需要从主要部分中删除条件模块,并将其仅放入配置文件(通常是activeByDefault配置文件)。

<profile>
  <id>default</id>
  <activation>
    <activeByDefault>true</activeByDefault>
  </activation>
    <modules>
        <module>a</module>
        <module>b</module>
    </modules>
</profile>
<profile>
  <id>add-c</id>
    <modules>
        <module>a</module>
        <module>b</module>
        <module>c</module>
    </modules>
</profile>

反过来说,配置文件无法删除任何内容,只能添加或覆盖内容。

这种技术称为反应器修剪,在此描述:http://www.blackbuild.com/how-to-really-use-maven-profiles-without-endangering-your-karma/

您也可以使用https://jira.codehaus.org/browse/MNG-5230中的新功能,只需致电(这需要Maven 3.2.1 +)

mvn clean package -pl !c

答案 2 :(得分:0)

可以使用Maven 2.0.10 +停用配置文件。

http://maven.apache.org/guides/introduction/introduction-to-profiles.html

停用个人资料

从Maven 2.0.10开始,可以使用命令行停用一个或多个配置文件,方法是在其标识符前加上字符'!'或' - '如下所示:

mvn groupId:artifactId:goal -P!profile-1,!profile-2

这可用于停用标记为activeByDefault的配置文件或通过其激活配置激活的配置文件。