首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Maven:从属性文件在pom.xml中设置属性

Maven:从属性文件在pom.xml中设置属性
EN

Stack Overflow用户
提问于 2013-09-02 13:04:43
回答 2查看 26.6K关注 0票数 10

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

以下是我如何尝试这样做的:

root pom.xml

代码语言:javascript
复制
<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

代码语言:javascript
复制
module1.version=1.1
module2.version=1.8
module3.version=5.4

模块pom.xml示例

代码语言:javascript
复制
<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>

生成失败的有:

未能在项目ccm上执行目标org.codehaus.mojo:build-helper-maven-plugin:1.7:parse-version (解析版本):目标org.codehaus.mojo:build-helper-maven-plugin:1.7:parse-version的执行解析版本失败。org.apache.maven.lifecycle.LifecycleExecutionException: 1 NullPointerException -> Help 1未能在项目ccm上执行目标org.codehaus.mojo:build-helper-maven-plugin:1.7:parse-version (解析-版本):执行解析-目标org.codehaus.mojo:build-helper-maven-plugin:1.7:parse-version失败。

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-09-02 13:31:22

最后似乎很简单。我用的是initialize相位。将其更改为validate修复了以下问题:

代码语言:javascript
复制
<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>properties-maven-plugin</artifactId>
    <version>1.0-alpha-2</version>
    <executions>
        <execution>
            <phase>validate</phase>
票数 7
EN

Stack Overflow用户

发布于 2013-09-02 13:17:27

不能在<parent>元素中使用属性/变量替换。

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

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

https://stackoverflow.com/questions/18574025

复制
相关文章

相似问题

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