gpt4 book ai didi

使用配置文件属性过滤 Maven 资源

转载 作者:行者123 更新时间:2023-12-04 08:56:35 30 4
gpt4 key购买 nike

我有以下 pom.xml:

<project
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>mycompany</groupId>
<artifactId>resource-fail</artifactId>
<version>0.0.1-SNAPSHOT</version>
<properties>
<foo.bar>BazBat</foo.bar>
</properties>
<build>
<resources>
<resource>
<filtering>true</filtering>
<directory>src/main/resources</directory>
</resource>
</resources>
</build>
<profiles>
<profile>
<id>Development</id>
<!--
<activation>
<activeByDefault>true</activeByDefault>
</activation>
-->
<properties>
<foo.bar>Development</foo.bar>
</properties>
</profile>
</profiles>
</project>

请注意 activation profile 上的元素被注释掉

我在 src/main/java/application.properties 中也有以下内容
myproperty=${foo.bar}

所以我希望 Maven 做的是简单地替换 ${foo.bar}BazBat , 除非开发配置文件被激活,然后我希望 Maven 替换 ${foo.bar}Development
当我跑 mvn package它将值设置为 BazBat .很好,资源过滤按预期工作。

但是,当我运行时 mvn package -P Development它将值设置为 BazBat
如果取消对 activation 的注释,会进一步混淆事情。配置文件上的元素并运行 mvn package它将设置 ${foo.bar}Development
我什至跑过 mvn help:active-profiles package让它输出事件的配置文件名称,在上面的两种情况下,它都说开发配置文件是事件的,但如果没有 activeByDefault,过滤仍然不起作用。标志被设置。

总结:
  • 如果配置文件是 activeByDefault,Maven 会使用配置文件中的值正确覆盖属性。
  • Maven 做 不是 如果我通过命令行开关
  • 激活配置文件,则覆盖该属性

    到底是怎么回事?

    我的环境:
    > mvn -version
    Apache Maven 3.2.5 (12a6b3acb947671f09b81f49094c53f426d8cea1; 2014-12-14T11:29:23-06:00)
    Maven home: C:\apache-maven-3.2.5
    Java version: 1.8.0_65, vendor: Oracle Corporation
    Java home: C:\Program Files\Java\jdk1.8.0_65\jre
    Default locale: en_US, platform encoding: Cp1252
    OS name: "windows 7", version: "6.1", arch: "amd64", family: "dos"

    更新:我已经升级到最新的 maven (3.3.3) - 问题仍然存在。我的新环境:
    > mvn -version
    Apache Maven 3.3.3 (7994120775791599e205a5524ec3e0dfe41d4a06; 2015-04-22T06:57:37-05:00)
    Maven home: C:\apache-maven-3.3.3
    Java version: 1.8.0_65, vendor: Oracle Corporation
    Java home: C:\Program Files\Java\jdk1.8.0_65\jre
    Default locale: en_US, platform encoding: Cp1252
    OS name: "windows 7", version: "6.1", arch: "amd64", family: "dos"

    最佳答案

    我在 Eclipse 中使用 m2e 运行它时遇到了同样的问题。通过在插件中启用配置文件来解决它:
    在 Eclipse 中右键单击您的项目,然后选择 Maven -> 选择 Maven Profiles...
    在这里您可以启用开发配置文件

    完成此操作后,maven 使用配置文件中设置的属性值过滤了我的资源。我删除了运行配置中的“-P”参数,因为不再需要它。

    如果您在 settings.xml 文件中定义并启用配置文件,这也可能有效,但我没有尝试这样做。

    关于使用配置文件属性过滤 Maven 资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33379181/

    30 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com