gradle spring boot 打包无依赖jar

背景

希望spring-bootjar包不包含项目的依赖,打包成一个轻量jar包,方便部署和快速打包

方法一:

修改build.gradle.kts:

1
2
3
4
5
6
7
8
9
10
11
12
tasks.withType<Jar>{
manifest {
attributes["Main-Class"] = "com.io.alyze.AlyzeApplicationKt"
//添加所有依赖的
attributes["Class-Path"] = configurations.runtimeClasspath.get().files.joinToString(" ") { "./libs/${it.name}" }
}
}
tasks.register<Copy>("jar-dependency") {
dependsOn("jar")
from(configurations.runtimeClasspath)
into(layout.buildDirectory.dir("libs/libs/"))
}

这样执行:./gradlew :jar-dependency 就会在build/lib目录生成一个xxx-palin.jar和一个libs文件夹

将这两个文件拷贝在一起,以使用java -jar xxx-plain.jar直接运行

方法二

修改build.gradle.kts:

1
2
3
4
5
tasks.register<Copy>("jar-dependency") {
dependsOn("jar")
from(configurations.runtimeClasspath)
into(layout.buildDirectory.dir("libs/libs/"))
}

这样执行:./gradlew :jar-dependency 就会在build/lib目录生成一个xxx-palin.jar和一个libs文件夹

将这两个文件拷贝在一起,可以使用java -cp "alyze-1.0-plain.jar:libs/*" your_main_class_name直接运行

Author

finger

Posted on

2023-12-22

Updated on

2025-06-11

Licensed under

Comments