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 destfrom(moduleName + "/dist/springBoot.sh")into destrename { String fileName ->fileName.replace('_'.concat(dest.replace(transferPath, '')), '') } // 被from指向的文件都会执行rename方法}}
}