setting.gradle
// settings.gradle
rootProject.name = 'my-project' // 指定根项目名称
include 'subproject1', 'subproject2' // 指定子项目名称,可选
jar包名称
方式一
jar {
archiveBaseName = 'my-application' // 设置 JAR 文件的基本名称
archiveVersion = '1.0' // 设置版本号
}
方式二:会动态地从根项目的额外属性(rootProject.ext)中获取jarName属性的值,并将其用作生成 JAR 文件的基本名称
// 项目build.gradle
jar {
baseName = rootProject.ext.jarName
}
// 根项目build.gradle配置
ext {
springBootVersion = "2.1.14.RELEASE"
jarName = rootProject.name // 根项目的名称,就是setting.gradle配置中的rootProject.name值
epEntryDir = project.hasProperty('EP_ENTRY_DIR') ? String.valueOf(EP_ENTRY_DIR) : 'src'
}
自定义gradle任务
task buildCommonBillJar 定义了一个自定义Gradle任务
type: GradleBuild:这里指定了任务的类型为 GradleBuild,它表明这是一个 Gradle 内置任务
dependsOn: ['lgsa-common-bill-mgr-server:build', clean]
:这里定义了任务的依赖关系,指定了该任务依赖于其他任务lgsa-common-bill-mgr-server:build和clean
。任务会在这些任务执行完毕后才开始执行。
mustRunAfter 是 Gradle 的依赖配置之一,用于指定一个任务在另一个任务之后执行。在这个例子中,它表明 build 任务必须在 clean 任务之后执行。
build.mustRunAfter clean //
task buildTaskJar(type: GradleBuild, dependsOn: [
'lgsa-common-bill-mgr-server:build', clean]
) {
// doLast会在上面的构建执行完成才执行
doLast {
String jarName = "jarName"
String moduleName = "jarName"
buildWithEnvConfig(moduleName , jarName)
file(moduleName + "/build").deleteDir() //删除当前目录 jarName/build 下的文件
}
}
def buildWithEnvConfig (String moduleName , String jarName) {
// 构建生成的jar包路径
String jarPath = moduleName + "/build/libs"
copy {
from(jarPath)
into moduleName + "/build"
rename {
String fileName -> jarName + '.jar'
}// 会将copy过来的所有文件都执行rename命令
}
String transferPath = "build/" + moduleName + "/"
delete(file(transferPath)) // 删除目录下的文件
file(transferPath + "dev").mkdirs() // 创建目录
file(transferPath + "test").mkdirs()
file(transferPath + "prod").mkdirs()
[transferPath + "dev", transferPath + "test", transferPath + "prod"].each { dest ->
copy {
from(moduleName + "/build/" + jarName + ".jar")
into dest // copy from中的指定文件值dest目录下
from(moduleName + "/dist/application_".concat(dest.replace(transferPath, '')).concat(".yml"))
into dest
from(moduleName + "/dist/springBoot.sh")
into dest
rename { String fileName ->
fileName.replace('_'.concat(dest.replace(transferPath, '')), '')
} // 被from指向的文件都会执行rename方法
}
}
}