【问题标题】:Cannot access parsedVersion value in pom properties无法访问 pom 属性中的 parsedVersion 值
【发布时间】:2018-05-03 10:58:32
【问题描述】:

我正在使用 maven 插件:

            <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>build-helper-maven-plugin</artifactId>
            <version>3.0.0</version>
            <executions>
                <execution>
                    <id>parse-version</id>
                    <goals>
                        <goal>parse-version</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>

解析项目版本。它工作正常:

[INFO] --- build-helper-maven-plugin:3.0.0:parse-version (parse-version)
[INFO]
[INFO] --- maven-antrun-plugin:1.1:run (default)
[INFO] Executing tasks

 [echo] Major: 2
 [echo] Minor: 0
 [echo] Incremental: 0
 [echo] Qualifier: SNAPSHOT
 [echo] BuildNumber: 0

但如果我想在配置文件属性中使用 parsedVersion.majorVersion 属性,则无法解析。

    <profiles>
    <profile>
        <id>local</id>
        <properties>
            <majorVersion>${myMajorVersion}</majorVersion>
        </properties>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
    </profile>
</profiles>

<properties>
    <myMajorVersion>${parsedVersion.majorVersion}</myMajorVersion>

有什么想法吗?

【问题讨论】:

  • 你想用这个设置达到什么目的?
  • parsedVersion.majorVersion 的值在哪里?在父级中?
  • - 我想使用 Spring Boot 应用程序属性中的值作为变量。

标签: maven properties yaml maven-plugin maven-versions-plugin


【解决方案1】:

这里的问题是属性值替换是在读入 POM 时完成的,而 build-helper 是在验证阶段运行的。当您在元素中读取它们时,这些属性尚未设置。

你可以做的是使用你的 build-helper:regex-property Mojo(参见https://www.mojohaus.org/build-helper-maven-plugin/regex-property-mojo.html)基于正则表达式设置一个属性。在您的个人资料中,您可以将属性设置为固定值,并且在正则表达式中,如果值匹配,则将其替换为 你想要的解析值。只要您设置的属性值在验证阶段之后使用,那么它将被设置为使用它的正确值。

【讨论】:

    猜你喜欢
    • 2012-03-31
    • 2012-07-15
    • 2018-08-07
    • 1970-01-01
    • 1970-01-01
    • 2014-09-19
    • 2021-10-02
    • 1970-01-01
    • 2023-03-06
    相关资源
    最近更新 更多