版本-maven-plugin - 不使用更新的属性构建。

Posted

技术标签:

【中文标题】版本-maven-plugin - 不使用更新的属性构建。【英文标题】:versions-maven-plugin - doesn't build with updated properties. 【发布时间】:2017-12-24 01:46:51 【问题描述】:

对于我的项目my.project,我有一个具有此属性的pom.xml

    <properties> 
        <my.dependency.version>0.0.10</my.dependency.version> 
    </properties>

此版本号代表我正在研究的另一个依赖项的最新发布版本。

在向my.dependency 添加新更改时,我将构建它并将其安装到我的本地存储库中,版本为0.0.11-SNAPSHOT

然后我需要重建 my.project 指向该依赖项 - 即。将my.dependency.version 更新为0.0.11-SNAPSHOT

我尝试使用versions-maven-plugin 执行此操作,如下所示:

    <profile>
        <id>use-latest</id>
        <activation>
            <activeByDefault>false</activeByDefault>
        </activation>
        <build>
            <plugins>
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>versions-maven-plugin</artifactId>
                    <version>2.4</version>

                    <executions>
                        <execution>
                            <id>update-dependency-versions</id>
                            <phase>initialize</phase>
                            <goals>
                                <goal>update-property</goal>
                            </goals>
                            <configuration>
                                <allowSnapshots>true</allowSnapshots>
                                <property>my.dependency.version</property>
                            </configuration>
                        </execution>

                      <!--  <execution>
                            <id>clean-up</id>
                            <phase>pre-integration-test</phase>
                            <goals>
                                <goal>revert</goal>
                                 <goal>commit</goal>
                            </goals>
                        </execution> --> 
                    </executions>
                </plugin>
            </plugins>
        </build>
    </profile>

(我现在已经注释掉了清理 - 稍后会更多)。

这将修改 pom 并将属性更新为0.0.11-SNAPSHOT。但是,当它构建和打包项目时,它仍然使用旧的依赖项。

如果我再次运行它,它将使用新的依赖项。这向我表明,maven 在更改它们之前阅读所有属性。

有没有办法可以修改依赖项,然后将该依赖项用于构建和打包?

关于清理的注意事项:然后我想删除我所做的更改,因为我不希望版本控制看到更改。

【问题讨论】:

显然是 maven reactor 中的依赖项缓存。调用版本插件可能会激活它,并且不会使其无效,因此停留在循环中的下一个插件。先尝试独立运行。 【参考方案1】:

versions-maven-plugin 的目标是 update-property,它只是被称为独立的。

如果你想在构建之前调用它,只需使用versions:update-property package 而不是package

【讨论】:

似乎版本插件不是为这种方式设计的。它对 POM 进行更改,但仅在 Maven 执行结束时进行。我们必须将构建配置为运行 Maven 两次,一次是使用 clean 和版本插件调用,然后是实际构建。因此,我们还需要使 POM 文件可写。

以上是关于版本-maven-plugin - 不使用更新的属性构建。的主要内容,如果未能解决你的问题,请参考以下文章

不能通过maven-plugins既不生成javadoc也不生成源代码?

在构建“maven-plugin”包时如何使用 Proguard 混淆?

maven-plugin

Maven 找不到 maven-plugins:maven-cobertura-plugin

CMDB与容灾备份的关联

文件权限及管理