springboot 打包出来的 jar 包的名字是在哪儿决定的

Spring Boot 项目中,打包出来的 JAR 包名称主要由以下几个地方决定:

1. Maven 项目(pom.xml)

pom.xml 文件中,JAR 包名称主要由以下配置决定:

xml 复制代码
<project>
    <!-- 最终JAR包名称格式:${project.build.finalName}.jar -->
    
    <!-- 方式1:通过 finalName 直接指定 -->
    <build>
        <finalName>my-custom-app</finalName>
    </build>
    
    <!-- 方式2:通过 artifactId 和 version 组合 -->
    <artifactId>my-springboot-app</artifactId>
    <version>1.0.0</version>
    <!-- 默认JAR包名称:my-springboot-app-1.0.0.jar -->
</project>

2. Gradle 项目(build.gradle)

build.gradle 文件中:

gradle 复制代码
// 方式1:通过 archivesBaseName 设置
jar {
    archivesBaseName = 'my-custom-app'
}

// 方式2:通过 bootJar 配置(Spring Boot 专用)
bootJar {
    archiveFileName = "${archiveBaseName.get()}-${archiveVersion.get()}.jar"
}

// 方式3:在 gradle.properties 中设置
// archivesBaseName=my-app

3. Spring Boot Maven Plugin 配置

如果使用了 Spring Boot Maven Plugin,也可以在其中配置:

xml 复制代码
<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                <finalName>my-springboot-app</finalName>
            </configuration>
        </plugin>
    </plugins>
</build>

4. 默认命名规则

如果没有特殊配置,默认的命名规则是:

  • Maven : ${artifactId}-${version}.jar
  • Gradle : ${baseName}-${version}.jar

5. 查看和验证

打包后可以通过以下命令查看生成的 JAR 包信息:

bash 复制代码
# Maven
mvn clean package

# Gradle
gradle clean build

总结 :主要查看项目的 pom.xml(Maven)或 build.gradle(Gradle)文件中的相关配置,特别是 finalNameartifactIdversion 等配置项。

相关推荐
Lost of 程序猿7 小时前
ASP.NET Core 认证授权实战:从 JWT 到 Policy,设计一套企业级 RBAC 权限系统
后端·asp.net
Lost of 程序猿7 小时前
ASP.NET Core 后台任务全景:从 BackgroundService 到 Channel 队列,再到分布式调度
后端·asp.net·.netcore
倾颜8 小时前
NestJS 核心概念梳理:从 Module、Controller 到 Guard、Interceptor
后端·node.js·nestjs
东风破_8 小时前
JWT 1:从一个登录请求开始,理解 React 项目里的 API 层与 Mock
前端·后端
东风破_8 小时前
JWT 3:为什么 Token 要放进 Authorization?Axios 拦截器到底解决了什么?
前端·后端
东风破_8 小时前
JWT 5:路由守卫是什么?把整个 JWT 登录鉴权流程串起来
前端·后端
东风破_8 小时前
JWT 2:HTTP 是无状态的,为什么登录成功后还要给 Token?
前端·后端
东风破_8 小时前
JWT 4:Zustand 到底解决了什么?为什么登录状态要放进 Store?
前端·后端
IT_陈寒9 小时前
Vite动态导入差点让我秃头,原来问题出在这
前端·人工智能·后端
唐青枫10 小时前
别只把大括号当作用域:Zig Block、标签块与控制流实战
后端