使用 buildnumber-maven-plugin 检索 svn 上次更改的修订号

Xtr*_*ica 5 svn maven-3 maven buildnumber-maven-plugin

我目前正在为我的应用程序开发基于微服务的架构。我有一个 maven 多模块项目,它有很多服务,所以我可以使用 maven deploy 命令和一个maven docker plugin轻松地将它们部署到 docker hub 。

尽管如此,docker 镜像标签还是基于项目版本号,而我希望用每个存储库的最后更改的修订号来标记它们。目前,我只是尝试使用buildnumber-maven-plugin将此字段添加为清单条目:

假设这是我的多模块项目:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
...

    <modules>
        <module>module-a</module>
        <module>module-b</module>
    </modules>

...

</project>
Run Code Online (Sandbox Code Playgroud)

模块 a 的模型是:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    ...


    <scm>
        <connection>scm:svn:http://myrepo.com/svn/application/module-a</connection>
    </scm>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>buildnumber-maven-plugin</artifactId>
                <version>1.4</version>
                <executions>
                    <execution>
                        <phase>validate</phase>
                        <goals>
                            <goal>create</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <doCheck>false</doCheck>
                    <doUpdate>true</doUpdate>
                    <useLastCommittedRevision>true</useLastCommittedRevision>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <configuration>
                    <archive>
                        <manifestEntries>
                            <SCM-Revision>${buildNumber}</SCM-Revision>
                        </manifestEntries>
                    </archive>
                </configuration>
            </plugin>
            ....
        </plugins>
    </build>

    <dependencies>
        ...
    </dependencies>

</project>
Run Code Online (Sandbox Code Playgroud)

问题是 {buildNumber} 计算的是我的工作副本号,它是指对存储库所做的最后一次提交而不是scm:svn:http://myrepo.com/svn/application/module-a位置。为了更好地解释它,当我从 tortoise 显示 module-a 的属性时,我得到了这个:

在此处输入图片说明

我想要的是检索 3248,它指的是对模块 a 所做的最后一次真正的更改,而不是 3257(工作副本),这是我从插件中得到的。这样 docker 插件就会知道它是否是一个不同的图像标签,并且只有在对 repo 中的模块进行了更改时才会推送它。

mvk*_*_il 1

我想你唯一错过的是

<doCheck>false</doCheck>
Run Code Online (Sandbox Code Playgroud)

我想应该是的true