如何自定义构建生成的.jar文件名?无需修改项目名称
嗨,这个需求太常见啦!不用改项目名也能轻松自定义打包后的Jar文件名,我分Maven和Gradle这俩主流构建工具给你说具体怎么配置:
Maven 配置方案
Maven可以通过内置的时间戳属性+自定义finalName来实现动态命名,步骤超简单:
- 先在
pom.xml的<properties>节点里定义日期格式(按需调整):
<properties> <!-- 这里用yyyyMMdd格式,你也可以改成yyyy-MM-dd之类的 --> <maven.build.timestamp.format>yyyyMMdd</maven.build.timestamp.format> </properties>
- 找到
<build>节点,修改<finalName>为你想要的格式:
<build> <!-- 把myapp换成你想要的自定义名称,也可以加上版本号比如${maven.build.timestamp}_myapp-${project.version} --> <finalName>${maven.build.timestamp}_myapp</finalName> <!-- 如果你是Spring Boot项目,记得保留spring-boot-maven-plugin的配置,finalName会自动生效 --> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build>
执行mvn clean package后,target目录下就会生成类似20240520_myapp.jar的文件啦~
Gradle 配置方案
Gradle的配置更灵活,直接修改Jar任务的归档名称即可,分Groovy和Kotlin两种DSL写法:
Groovy DSL(build.gradle)
// 生成当日日期,格式可自定义 def currentDate = new Date().format('yyyyMMdd') // 普通Java项目配置jar任务 jar { // 把myapp换成你的自定义名称,加版本号就写"${currentDate}_myapp-${version}.jar" archiveName = "${currentDate}_myapp.jar" } // 如果是Spring Boot项目,要配置bootJar任务而非jar任务 // bootJar { // archiveName = "${currentDate}_myapp.jar" // }
Kotlin DSL(build.gradle.kts)
import java.text.SimpleDateFormat import java.util.Date val currentDate = SimpleDateFormat("yyyyMMdd").format(Date()) // 普通Java项目配置jar任务 tasks.jar { archiveFileName.set("${currentDate}_myapp.jar") } // Spring Boot项目替换为bootJar任务 // tasks.bootJar { // archiveFileName.set("${currentDate}_myapp.jar") // }
执行./gradlew clean build后,build/libs目录下就会出现你想要的命名的Jar包啦~
内容的提问来源于stack exchange,提问作者qwerty12345
相关产品推荐
相关产品推荐

