我的springboot是用gradle来构建。
现在想准备2个构建方式:一个是全项目打包为一个jar;一个是排除依赖包到lib文件夹里,打包一个轻量的jar。
// 全项目打包为1个jar
bootJar {
archiveFileName = 'my-project.jar'
excludes = ["**/application-ex.yaml"]
}
// 排除jar的打包方式
task bootJarWithOutJar {
dependsOn bootJar {
// 排除所有的jar
excludes = ["*.jar", "**/application-ex.yaml"]
// 指定依赖包的路径
manifest {
attributes "Manifest-Version": 1.0,
'Class-Path': project.configurations.compileClasspath.files.collect { "lib/$it.name" }.join(' ')
}
}
// 迁移依赖包到lib文件夹里
dependsOn copyJar
}
现在问题是,如果写了bootJarWithOutJar
这个task,就会导致执行bootJar
,也会以排除jar的打包方式
打包。个人感觉,是bootJarWithOutJar
里面的内容,特别是dependsOn bootJar{}
这句,污染了bootJar
。
后来,又另外换了一种方式写,虽然是不污染了,但是打出来的jar大小不对,启动不了项目。
// 排除jar的打包方式
task bootJarWithOutJar(type: org.springframework.boot.gradle.tasks.bundling.BootJar) {
// 排除所有的jar
excludes = ["*.jar", "**/application-ex.yaml"]
// 指定依赖包的路径
manifest {
attributes "Manifest-Version": 1.0,
'Class-Path': project.configurations.compileClasspath.files.collect { "lib/$it.name" }.join(' ')
}
dependsOn copyJar
}
求大神指点。