【问题标题】:Maven: set property in pom.xml from properties fileMaven:从属性文件中设置 pom.xml 中的属性
【发布时间】:2013-09-05 14:38:55
【问题描述】:

我有一个多模块项目,对不同的模块版本有很多依赖。目前版本是硬编码的,需要手动更改它们。所以我决定将它们全部放到一个属性文件中,并在项目构建期间从中获取属性值。

这是我尝试的方法:

根 pom.xml

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>properties-maven-plugin</artifactId>
    <version>1.0-alpha-2</version>
    <executions>
        <execution>
            <phase>initialize</phase>
            <goals>
                <goal>read-project-properties</goal>
            </goals>
            <configuration>
                <files>
                    <file>./version.properties</file>
                </files>
            </configuration>
        </execution>
    </executions>
</plugin>

文件 version.properties

module1.version=1.1
module2.version=1.8
module3.version=5.4

模块 pom.xml 示例

<properties>
    <module1.project.version>${module1.version}</module1.project.version>
</properties>

<parent>
    <groupId>com.mymodule</groupId>
    <artifactId>test</artifactId>
    <version>${module1.version}</version>
    <relativePath>../pom.xml</relativePath>
</parent>

构建失败:

未能执行目标 org.codehaus.mojo:build-helper-maven-plugin:1.7:parse-version 项目 ccm-agent 上的 (parse-versions):执行 parse-versions 目标 org.codehaus.mojo:build-helper-maven-plugin:1.7:parse-version 失败的。 NullPointerException -> [帮助 1] org.apache.maven.lifecycle.LifecycleExecutionException: 失败 执行目标 org.codehaus.mojo:build-helper-maven-plugin:1.7:parse-version 项目 ccm-agent 上的 (parse-versions):执行 parse-versions 目标 org.codehaus.mojo:build-helper-maven-plugin:1.7:parse-version 失败了。

如何从文件中读取一些属性并正确配置 pom.xml?

【问题讨论】:

    标签: maven


    【解决方案1】:

    最后看起来很简单。我使用了initialize 阶段。将其更改为 validate 解决了问题:

    <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>properties-maven-plugin</artifactId>
        <version>1.0-alpha-2</version>
        <executions>
            <execution>
                <phase>validate</phase>
    

    【讨论】:

    • 您使用的是 Maven 2 还是 3?
    • Maven 3.0.4。我认为这很重要?
    • @Dragon 你能看看下面的问题我无法将属性文件访问到 pom.xml stackoverflow.com/questions/51656393/…
    • 不适用于 Maven 4,无法使用从属性文件中读取的属性作为版本或项目属性。
    【解决方案2】:

    您不得在&lt;parent&gt; 元素内使用属性/变量替换。

    这里的主要原因是 Maven 必须先读取父 POM,然后才能开始扩展属性,因为父 POM 也可能定义属性。

    【讨论】:

    • 也许示例并不像应有的那样正确。但是,例如,可以在依赖项中使用它。
    • 我说“你不能在&lt;parent&gt;元素内部使用属性/变量替换”。依赖项是完全不同的事情,因为它们不能修改您的属性。
    • 我在示例中理解了我的错误。谢谢。
    • 事实上,你不应该在任何&lt;version&gt;元素中使用变量,除了依赖。请改用&lt;dependencyManagement&gt;
    • @AaronDigulla 能否为上述陈述举个例子
    猜你喜欢
    • 2021-10-23
    • 1970-01-01
    • 2018-04-13
    • 2011-11-25
    • 2018-06-04
    • 2018-08-04
    • 1970-01-01
    • 1970-01-01
    • 2013-06-20
    相关资源
    最近更新 更多