【问题标题】:Maven profile properties are not "overriding"Maven 配置文件属性不是“覆盖”
【发布时间】:2012-03-07 19:23:07
【问题描述】:

我有这样结构的 Maven 多模块项目:

父项目

-- 模块1

-- 模块2

在 parent-pom-project 我有这样的 pom.xml

    <modules>
        <module>module1</module>
    </modules>
...
    <profiles>
        <profile>
           <id>local</id>
           <properties>
               <prop>local_prop</prop>
           </properties>
        </profile>
        <profile>
           <id>test</id>
           <modules>
                <module>module2</module>
           </modules>
           <properties>
               <prop>test_prop</prop>
           </properties>
        </profile>
    </profiles>

在所有 pom.xml 文件中我都有这样的标签:

<build>
    <resources>
        <resource>
            <directory>src/main/resources</directory>
            <filtering>true</filtering>
        </resource>
        <resource>
            <directory>src/test/resources</directory>
            <filtering>true</filtering>
        </resource>
    </resources>
</build>

resource 目录中的 module1 和 module2 中,我有带有这样文本的属性文件:

prop=${prop}

问题是之后

mvn 全新安装

mvn clean install -Ptest

甚至

mvn 全新安装 -P 测试

我明白了

prop=local_prop

如果我还构建了构建模块 2 的用户测试配置文件,但使用本地配置文件中的属性。 我使用 Maven 3.0.3。 有人有什么想法吗?

【问题讨论】:

  • 您确定没有在任何配置文件节点之外定义属性吗?
  • 事实上,我认为您可以尝试在任何配置文件节点之外使用空值定义属性。 -->
  • 2 bugske 是的 - 我仔细检查了它。我试试你的第二个想法 - 没有任何改变。
  • 您是否正在从您的父模块目录执行mvn 命令?
  • 嗯,我也遇到了同样的问题:/你找到解决办法了吗??

标签: java maven maven-3


【解决方案1】:

您可以尝试使用 mvn help:effective-pom -Ptest 命令查看构建中使用的参数。

请参阅http://maven.apache.org/plugins/maven-help-plugin/plugin-info.html 了解更多详情。

【讨论】:

    【解决方案2】:

    在您的资源目录前添加${basedir}

    &lt;directory&gt;${basedir}/src/main/resources&lt;/directory&gt;

    这应该可以解决您的问题。我的解释是,如果您是从顶层构建的,那么在多模块项目中,它没有正确选择路径(在子模块中)。因此,在尝试过滤时,它会将其应用于不同的目录(实际的根级聚合器),而不是子目录。

    希望对你有帮助。

    【讨论】:

    【解决方案3】:

    如果您不指定任何配置文件,我无法弄清楚 maven 如何解析您的属性。所以,为了看看到底有什么,我尝试了自己,完全按照你描述的模式......我没有遇到你遇到的问题。在您的情况下,它的行为就像在配置文件之外定义属性一样 - 正如 bugske 所建议的那样。如果您暂时评论两个个人资料会怎样?

    【讨论】:

      【解决方案4】:

      我解决了为 Eclipse 卸载当前 maven 插件并使用另一个插件的问题。 现在我用这个: - Maven 集成:http://m2eclipse.sonatype.org/sites/m2e - WTP 的 Maven 集成:http://m2eclipse.sonatype.org/sites/m2e-extras/

      早期我使用的是http://download.eclipse.org/technology/m2e/releases/。我无法解释这种行为,但可能是插件更改了某些配置。

      【讨论】:

      • 奇怪...听起来像 m2 插件中的另一个错误...(顺便说一下,您的第三个链接已损坏)
      • 在 Eclipse 中使用这个 url (Help->Install New Software)
      • (我是 IntelliJ 用户)。哦,好吧,我应该再读一会;)(“这是一个 Eclipse 更新站点/p2 存储库;您必须从 Eclipse 访问它”)...对不起。
      【解决方案5】:

      虽然老我有同样的问题,并没有在这里找到解决方案。对我来说,问题是我在命令行上使用与 mvn 并行的 Eclipse。在我在命令行上这样做之后,Eclipse 立即调用了 process-resources。

      因此解决方案是在 Eclipse 中选择配置文件(项目->Maven->选择 Maven 配置文件)。

      【讨论】:

        猜你喜欢
        • 2013-02-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-09-14
        • 2011-01-04
        • 1970-01-01
        • 2021-06-22
        • 2019-04-11
        相关资源
        最近更新 更多