场景
key | Value |
---|---|
开发工具 | idea |
框架 | springboot |
管理工具 | greadle |
实现功能
使用greadle将项目打包成jar文件 实现资源文件和项目代码的分离
效果展示
实现方法
仅实现资源jar与项目分离方法:
修改build.gradle文件,将下面代码添加至最后
//仅实现资源jar与项目的分离
// 清除现有的lib目录
task clearJar(type: Delete) {
delete "$buildDir\\libs\\lib"
}
// 将依赖包复制到lib目录
task copyJar(type: Copy, dependsOn: 'clearJar') {
from configurations.compileClasspath
into "$buildDir\\libs\\lib"
}
bootJar {
// 例外所有的jar
excludes = ["*.jar"]
// lib目录的清除和复制任务
dependsOn clearJar
dependsOn copyJar
// 指定依赖包的路径
manifest {
attributes "Manifest-Version": 1.0,
'Class-Path': configurations.compileClasspath.files.collect { "lib/$it.name" }.join(' ')
}
}
实现资源jar,配置文件与项目分离方法:
修改build.gradle文件,将下面代码添加至最后
// 实现资源jar,配置文件与项目的分离
// 将依赖包复制到lib目录
task copyJar(type: Copy) {
// 清除现有的lib目录
delete "$buildDir\\libs\\lib"
from configurations.compileClasspath
into "$buildDir\\libs\\lib"
}
// 拷贝配置文件
task copyConfigFile(type: Copy) {
// 清除现有的配置目录
delete "$buildDir\\libs\\config"
from('src/main/resources')
into 'build/libs/config'
}
// 配置bootJar进行打包
bootJar {
// 设置项目jar包名称,默认是settings.gradle下的工程名 rootProject.name = 'alog-server'
baseName = 'general-query'
// 设置项目jar包版本号
version = '0.0.1'
// 排除所有的jar
excludes = ["*.jar"]
// lib目录的清除和复制任务
dependsOn copyJar
// 配置目录的清除和复制任务
dependsOn copyConfigFile
// 指定依赖包的路径
manifest {
attributes "Manifest-Version": 1.0,
'Class-Path': configurations.compileClasspath.files.collect { "lib/$it.name" }.join(' ')
}
}
注意:greadle引入jar包的方式如果是runtime将导致打包后缺少对应jar资源