1

我正在使用 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>

任何想法?

4

1 回答 1

0

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

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

于 2022-02-16T22:51:00.653 回答