首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从父配置文件激活子配置文件

从父配置文件激活子配置文件
EN

Stack Overflow用户
提问于 2016-02-10 00:23:13
回答 2查看 6.7K关注 0票数 11

我有以下父pom.xml文件:

代码语言:javascript
复制
<profile>
    <id>build_full</id>
    <activation>
        <activeByDefault>true</activeByDefault>
    </activation>
    <modules>
        <module>mymodule_interface</module>
        <module>mymodule_switch</module>
        <module>mymodule_switch_simulator</module>
        <module>mymodule_switch_controller</module>
        <module>mymodule_server</module>
    </modules>
</profile>

在我给mymodule_server的孩子pom中,我有以下几点:

代码语言:javascript
复制
<profile>
    <id>subprofile</id>
    <modules>
        <module>...various modules...</module>
    </modules>
</profile>  
<profile>
    <id>default</id>
    <activation>
        <activeByDefault>true</activeByDefault>
    </activation>
    <modules>
        <module>...various modules...</module>
    </modules>
</profile>  

当我调用maven:mvn -P build_full时,如何强制子模块(mymodule_server)使用配置文件subprofile而不是default

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-02-10 08:35:05

不,不能从父配置文件激活子配置文件。更普遍的是,不能从任何其他配置文件激活或停用任何配置文件 (有一个JIRA特性--request MNG-3309)。你能做的就是基于相同的属性激活两个配置文件

首先,使用默认激活的配置文件通常不是一个好主意。您想要的是基于某种条件(OS版本、系统属性.)激活配置文件。为了解决您的问题,您可以在某个系统属性存在时激活build_full配置文件,并确保在存在相同属性时也激活了subprofile

示例配置如下所示,当fullBuild系统属性设置为true时,这两个配置文件都会被激活。因此,用mvn -DfullBuild=true ...调用Maven将激活这两个配置文件。

代码语言:javascript
复制
<profile>
    <id>build_full</id>
    <activation>
        <property>
            <name>fullBuild</name>
            <value>true</value>
        </property>
    </activation>
    <modules>
        <module>mymodule_interface</module>
        <module>mymodule_switch</module>
        <module>mymodule_switch_simulator</module>
        <module>mymodule_switch_controller</module>
        <module>mymodule_server</module>
    </modules>
</profile>
代码语言:javascript
复制
<profile>
    <id>subprofile</id>
    <activation>
        <property>
            <name>fullBuild</name>
            <value>true</value>
        </property>
    </activation>
    <modules>
        <module>...various modules...</module>
    </modules>
</profile>
票数 9
EN

Stack Overflow用户

发布于 2016-02-10 08:33:23

在您的示例中,您可以在顶级父/聚合器文件夹中运行:

代码语言:javascript
复制
mvn clean install -Pbuild_full,!default,subprofile

它将禁用任何具有名称default的配置文件(从而禁用相关子模块中的配置文件),并启用任何具有名称subprofile的配置文件(从而启用您想要的配置文件)。

或者,您可以将subprofile配置为这样:

代码语言:javascript
复制
<profiles>
    <profile>
        <id>subprofile</id>
        <activation>
            <property>
                <name>subprofile</name>
                <value>true</value>
            </property>
        </activation>
        ....

然后运行如下:

代码语言:javascript
复制
mvn clean install -Dsubprofile=true -Pbuild_full

它也会产生同样的效果。您甚至可以避免使用value元素,只需指定-Dsubprofile,它的存在就足以激活配置文件(在这种情况下,建议使用一个更有意义的名称,如-DactivateSubprofile)。由于您活动的是不同的配置文件,因此自动Maven将禁用默认配置文件。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35304770

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档