Maven:配置文件激活取决于 localRepository 属性?

Posted

技术标签:

【中文标题】Maven:配置文件激活取决于 localRepository 属性?【英文标题】:Maven: Profile activation depending on localRepository property? 【发布时间】:2011-11-11 08:57:40 【问题描述】:

在 Maven 中,我只想在工件尚未安装到存储库时执行构建。我的想法是使用默认情况下不活动的配置文件,但如果工件丢失,则会被激活。 到目前为止我没有成功,因为似乎 Maven 属性不能用于配置文件激活?

settings.xml:

...
<localRepository>/local/m2repo</localRepository>
...

1) 这行得通:

pom.xml:

...
<profile>
    <id>my-profile</id>
    <activation>
        <activeByDefault>false</activeByDefault>
        <file>
            <missing>/local/m2repo/something</missing>
        </file>
    </activation>
    ...
</profile>

2) 这不起作用:

pom.xml:

...
<profile>
    <id>my-profile</id>
    <activation>
        <activeByDefault>false</activeByDefault>
        <file>
            <missing>$settings.localRepository/something</missing>
        </file>
    </activation>
    ...
</profile>

3) 这也不起作用:

settings.xml:

...
<properties>
    <local.repository>$settings.localRepository</local.repository>
</properties>
...

pom.xml:

<profile>
    <id>my-profile</id>
    <activation>
        <activeByDefault>false</activeByDefault>
        <file>
            <missing>$local.repository/something</missing>
        </file>
    </activation>
</profile>

是否有某种解决方法或替代方法可以检查我的工件是否存在并仅在必要时运行构建? 感谢您的任何想法!

【问题讨论】:

【参考方案1】:

你不能那样做。

激活文件的位置通常是相对于当前项目文件夹的。

只有在配置文件已经定义并开始构建后才会计算属性。

【讨论】:

以上是关于Maven:配置文件激活取决于 localRepository 属性?的主要内容,如果未能解决你的问题,请参考以下文章

Maven的安装环境配置

如何在子模块中停用 Maven 配置文件?

Maven:如果配置文件 B 未激活,则仅激活配置文件 A?

如何修改maven默认仓库的路径

Maven:如何根据子模块是不是包含文件来激活配置文件?

Maven - 根据属性激活子配置文件