johnclot69 3 місяців тому
батько
коміт
4e842a175e
3 змінених файлів з 132 додано та 46 видалено
  1. 14 7
      build.gradle
  2. 57 19
      incubator-center/build.gradle
  3. 61 20
      incubator-game/build.gradle

+ 14 - 7
build.gradle

@@ -2,8 +2,12 @@ subprojects {
     apply plugin: 'java'
     apply plugin: 'idea'
 
-    sourceCompatibility = 1.8
-    targetCompatibility = 1.8
+    // 配置Java版本
+    java {
+        toolchain {
+            languageVersion.set(JavaLanguageVersion.of(8))  // 设置 JDK 8
+        }
+    }
 
     repositories {
         // 阿里云公共仓库
@@ -14,18 +18,21 @@ subprojects {
         mavenCentral()
     }
 
+    // 排除不必要的依赖,恢复配置
 //    configurations {
 //        all {
 //            exclude group: 'ch.qos.logback'
 //        }
 //    }
 
-    task copyAllDependencies(type: Copy) {
-        from configurations.compileClasspath
-        into "${buildDir}/libs/lib"
+    // 配置编译选项
+    tasks.withType(JavaCompile).configureEach {
+        options.encoding = 'UTF-8'
     }
 
-    tasks.withType(JavaCompile) {
-        options.encoding = "UTF-8"
+    // 复制依赖任务,使用更现代的 `runtimeClasspath`
+    task copyAllDependencies(type: Copy) {
+        from configurations.runtimeClasspath
+        into "${buildDir}/libs/lib"
     }
 }

+ 57 - 19
incubator-center/build.gradle

@@ -4,40 +4,78 @@ plugins {
     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 {
-    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')
-    // 设置版本
-    archiveVersion.set('1.0-SNAPSHOT')
-    // 设置分类器(可选)classifier是生成jar包的后缀
+    // 使用项目的版本号作为 JAR 的版本
+    archiveVersion.set(project.version)
+    // 移除分类器,生成的 JAR 没有后缀
     archiveClassifier.set('')
 
+    // 添加自定义清单
     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 {
+    // 子模块依赖
     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()
-}
+    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" // 确保清理构建目录
+}

+ 61 - 20
incubator-game/build.gradle

@@ -4,40 +4,81 @@ plugins {
     id "com.github.johnrengelman.shadow" version "7.1.2"
 }
 
-group 'com.incubator.game'
-version '1.0-SNAPSHOT'
+group = 'com.incubator.game'
+version = '1.0-SNAPSHOT'
+
+repositories {
+    mavenCentral()
+}
 
 application {
-    mainClassName = 'com.incubator.game.GameServerStart'
+    // 使用新的方法设置主类,适应 Gradle 7.0 及以上版本
+    mainClass.set('com.incubator.game.GameServerStart')
 }
 
-// 禁掉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-game')
-    // 设置版本
-    archiveVersion.set('1.0-SNAPSHOT')
-    // 设置分类器(可选)classifier是生成jar包的后缀
+    // 使用项目的版本号作为 JAR 的版本
+    archiveVersion.set(project.version)
+    // 移除分类器,生成的 JAR 没有后缀
     archiveClassifier.set('')
 
+    // 添加自定义清单
     manifest {
-        attributes 'Main-Class': 'com.incubator.game.GameServerStart'
+        attributes(
+                'Main-Class': application.mainClass.get() // 使用动态设置的主类
+        )
     }
+
+    // 可选:排除不必要的依赖
+    exclude 'META-INF/*.SF', 'META-INF/*.DSA', 'META-INF/*.RSA'
 }
 
+// 依赖版本集中管理
+ext {
+    junitVersion = '5.9.0'
+    shadowVersion = '7.1.2'
+}
+
+// 项目依赖
 dependencies {
-    implementation project(path: ':incubator-core')
+    // 子模块依赖
+    implementation project(':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()
-}
+    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" // 确保清理构建目录
+}