弹簧引导控制目标 JAR 文件名

2022-09-01 11:17:58

我的 Spring Boot 项目有构建说明:

<build>

    <plugins>

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.18.1</version>
            <dependencies>
                <dependency>
                    <groupId>org.apache.maven.surefire</groupId>
                    <artifactId>surefire-junit47</artifactId>
                    <version>2.18.1</version>
                </dependency>
            </dependencies>
        </plugin>

        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <version>${spring-boot.version}</version>
            <executions>
                <execution>
                    <goals>
                        <goal>repackage</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <mainClass>com.app.MainClass</mainClass>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
            </configuration>
        </plugin>

    </plugins>
</build>

我希望我的JAR文件名在一个分支中,在另一个分支中,由Jenkins控制(使用某种mvn设置或JVM参数,如-D.)。app-1.0-SNAPSHOT.jar1.0-RELEASE.jar

我可以这样做吗?


答案 1

如此简单,在一个分支中,您有pom.xml

<build>
  <finalName>app-1.0-SNAPSHOT</finalName>
</build>


在其他分支中,您有pom.xml

<build>
  <finalName>1.0-RELEASE</finalName>
</build>

答案 2

您可以将项目的版本传播到您的生成名称,如下所示:

<build>
    <finalName>app-${project.version}</finalName>
</build>

或父项目的版本(如果有):

<build>
    <finalName>app-${parent.version}</finalName>
</build>

然后,您将跟踪项目版本而不是生成名称。

但是,请注意,使用分支在 SCM 中管理构建 verson 会很痛苦,并且容易出错。相反,建议你的代码存储库与你的构建版本无关。

一种可能的替代方法是使用一些发布管理工具,例如 ,甚至更简单。maven release pluginmaven version

例:

在这里,我将给出并使用.maven verion

假设您正在使用SCM工具(可能是)和构建工厂(如或任何其他工具)。假设您有一项工作来构建和部署快照,另一项工作用于发布gitJenkins

快照作业中,您可以使用以下 maven 目标设置预构建任务:

versions:set -DnewVersion=app-1.0-SNAPSHOT

以及发布作业中的以下内容:

versions:set -DnewVersion=app-1.0-RELEASE

现在这样做是可以的,因为你只是在本地这样做,永远不必在代码中管理生成版本。

现在,您可以在成功应用和构建后标记(发布)版本(希望包括单元,集成和功能测试)。通过这种方式,您可以准确跟踪每个版本上已部署的代码。maven version

提示!!空间就是金钱!帮自己一个忙:定期清理快照存储库。创建一个每隔一段时间这样做的工作应该并不困难。


推荐