Spring 引导 Maven 构建不包括最终 jar 中的工件版本

Spring boot maven build not including artifact version in final jar

在使用 mvn clean package 构建我的 spring 启动应用程序时,正在构建的最终工件 myapp.jar 没有在 jar 名称中包含版本号。
我应该做什么更改才能使工件版本号成为 jar 的一部分。
pom.xml的相关部分如下-

<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/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.mycomp</groupId>
    <artifactId>myapp</artifactId>
    <version>2.6.0</version>

    <name>myapp</name>
    <description>
        <![CDATA[]]>
    </description>

    <packaging>jar</packaging>

    <properties>

        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <java.version>1.8</java.version>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>

        <springboot.version>2.5.6</springboot.version>

    </properties>

    <dependencies>

        <!-- Spring boot -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
            <version>${springboot.version}</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>5.3.12</version>
        </dependency>
        ...
        <dependency>
            <groupId>org.apache.maven</groupId>
            <artifactId>maven-artifact</artifactId>
            <version>3.6.3</version>
        </dependency>

    </dependencies>

    <build>

        <finalName>gitlab-finder</finalName>

        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>3.8.1</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-resources-plugin</artifactId>
                    <version>3.1.0</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-jar-plugin</artifactId>
                    <version>3.1.2</version>
                </plugin>

            </plugins>
        </pluginManagement>

        <plugins>

            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>${springboot.version}</version>
                
            </plugin>

        </plugins>

    </build>

</project>

注意: 我使用 spring starter(通过 sts)创建了一个新的 spring 引导项目,并且对于这个新项目,jar 具有工件版本默认情况下包含在 jar 名称中。所以想知道这是否是默认功能,为什么我的项目不是这种情况(顺便说一句,我是这个项目的维护者而不是创建者,但我必须添加将版本号包含到 jar 名称中的功能。)

您正在覆盖生成项目名称的默认行为。这是因为您定义了 finalName 标签。

来自docs

finalName: This is the name of the bundled project when it is finally built (sans the file extension, for example: my-project-1.0.jar). It defaults to ${artifactId}-${version}.

在你的例子中,它被定义为 <finalName>gitlab-finder</finalName>,它不包含项目的版本。您可以将 ${version} 添加到 <finalName>gitlab-finder-${version}</finalName> 或删除 finalName 标签。