|
@@ -4,40 +4,78 @@ plugins {
|
|
id "com.github.johnrengelman.shadow" version "7.1.2"
|
|
id "com.github.johnrengelman.shadow" version "7.1.2"
|
|
}
|
|
}
|
|
|
|
|
|
-group 'com.incubator.center'
|
|
|
|
-version '1.0-SNAPSHOT'
|
|
|
|
|
|
+group = 'com.incubator.center'
|
|
|
|
+version = '1.0-SNAPSHOT'
|
|
|
|
+
|
|
|
|
+repositories {
|
|
|
|
+ mavenCentral() // 使用中央仓库
|
|
|
|
+}
|
|
|
|
|
|
application {
|
|
application {
|
|
- mainClassName = 'com.incubator.center.CenterServerStart'
|
|
|
|
|
|
+ // 使用新的方法设置主类,适应 Gradle 7.0 及以上版本
|
|
|
|
+ mainClass.set('com.incubator.center.CenterServerStart')
|
|
}
|
|
}
|
|
|
|
|
|
-// 禁掉jar task
|
|
|
|
-jar.enabled = false
|
|
|
|
|
|
+// 禁用默认的 JAR 任务,因为我们使用 Shadow JAR
|
|
|
|
+tasks.jar {
|
|
|
|
+ enabled = false
|
|
|
|
+}
|
|
|
|
|
|
-// 执行shadow的打包
|
|
|
|
-shadowJar {
|
|
|
|
- zip64 true
|
|
|
|
- // 设置 JAR 包基础名称
|
|
|
|
|
|
+// 配置 Shadow JAR 任务
|
|
|
|
+tasks.shadowJar {
|
|
|
|
+ zip64 = true
|
|
|
|
+ // 设置 JAR 包的基本名称
|
|
archiveBaseName.set('incubator-center')
|
|
archiveBaseName.set('incubator-center')
|
|
- // 设置版本
|
|
|
|
- archiveVersion.set('1.0-SNAPSHOT')
|
|
|
|
- // 设置分类器(可选)classifier是生成jar包的后缀
|
|
|
|
|
|
+ // 使用项目的版本号作为 JAR 的版本
|
|
|
|
+ archiveVersion.set(project.version)
|
|
|
|
+ // 移除分类器,生成的 JAR 没有后缀
|
|
archiveClassifier.set('')
|
|
archiveClassifier.set('')
|
|
|
|
|
|
|
|
+ // 添加自定义清单
|
|
manifest {
|
|
manifest {
|
|
- attributes 'Main-Class': 'com.incubator.center.CenterServerStart'
|
|
|
|
|
|
+ attributes 'Main-Class': application.mainClass.get() // 使用动态设置的主类
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ // 可选:排除不必要的文件(例如签名文件)
|
|
|
|
+ exclude 'META-INF/*.SF', 'META-INF/*.DSA', 'META-INF/*.RSA'
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+// 版本号集中管理
|
|
|
|
+ext {
|
|
|
|
+ junitVersion = '5.9.0' // 集中管理 JUnit 版本
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+// 项目依赖
|
|
dependencies {
|
|
dependencies {
|
|
|
|
+ // 子模块依赖
|
|
implementation project(path: ':incubator-core')
|
|
implementation project(path: ':incubator-core')
|
|
|
|
|
|
- testImplementation 'org.junit.jupiter:junit-jupiter-api:5.9.0'
|
|
|
|
- testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.9.0'
|
|
|
|
|
|
+ // 测试依赖
|
|
|
|
+ testImplementation "org.junit.jupiter:junit-jupiter-api:${junitVersion}"
|
|
|
|
+ testRuntimeOnly "org.junit.jupiter:junit-jupiter-engine:${junitVersion}"
|
|
}
|
|
}
|
|
|
|
|
|
-assemble.dependsOn(shadowJar)
|
|
|
|
-
|
|
|
|
-test {
|
|
|
|
|
|
+// 配置测试任务
|
|
|
|
+tasks.test {
|
|
useJUnitPlatform()
|
|
useJUnitPlatform()
|
|
-}
|
|
|
|
|
|
+ testLogging {
|
|
|
|
+ events 'PASSED', 'FAILED', 'SKIPPED'
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+// 将 Shadow JAR 绑定到 assemble 阶段
|
|
|
|
+tasks.assemble.dependsOn(tasks.shadowJar)
|
|
|
|
+
|
|
|
|
+// 增加构建信息任务
|
|
|
|
+tasks.register("buildInfo") {
|
|
|
|
+ doLast {
|
|
|
|
+ println "Building project '${project.name}' version '${project.version}'"
|
|
|
|
+ println "Main class: ${application.mainClass.get()}"
|
|
|
|
+ println "Shadow JAR: ${tasks.shadowJar.get().archiveFile.get()}"
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+// 清理任务优化
|
|
|
|
+tasks.clean {
|
|
|
|
+ delete "$buildDir/libs" // 确保清理构建目录
|
|
|
|
+}
|