构建项目
学习了 Gradle 基础后,现在让我们来构建 EnderRealm 项目。
构建前的准备
在构建项目之前,确保:
- JDK 21 已安装:
java -version显示 21.x - JDK 17 已安装:
JAVA_HOME_17环境变量已设置 - Git 子模块已初始化:
git submodule status显示所有子模块 - 网络正常:能够访问 Maven 仓库
构建整个项目
使用构建脚本
EnderRealm 提供了便捷的构建脚本:
bash
# 构建所有模块并部署到 _server/ 目录
./gradlew setupDevServer这个命令会:
- 构建所有 Java 模块
- 构建 Floodgate 子模块(使用 JDK 17)
- 复制 JAR 文件到
_server/plugins/ - 复制运行时文件到
_server/
构建输出
构建成功后,你会看到类似输出:
> Task :EnderRealmServerCore:build
> Task :bedwars:build
> Task :disaster:build
> Task :BlockedInCombat:build
> Task :easy4form:build
BUILD SUCCESSFUL in 45s
15 actionable tasks: 15 executed构建单个模块
如果只想构建特定模块:
bash
# 构建核心插件
./gradlew :EnderRealmServerCore:build
# 构建空岛战争
./gradlew :bedwars:build
# 构建灾难生存
./gradlew :disaster:build
# 构建方块战斗
./gradlew :BlockedInCombat:build
# 构建表单库
./gradlew :easy4form:build构建输出文件
构建完成后,JAR 文件位于各模块的 build/libs/ 目录:
EnderRealmServerCore/
├── EnderRealmServerCore/build/libs/
│ └── EnderRealmServerCore-1.0-SNAPSHOT-all.jar
├── bedwars/build/libs/
│ └── bedwars-1.0-SNAPSHOT-all.jar
├── disaster/build/libs/
│ └── disaster-1.0-SNAPSHOT-all.jar
├── BlockedInCombat/build/libs/
│ └── BlockedInCombat-1.0-SNAPSHOT-all.jar
└── easy4form/build/libs/
└── easy4form-1.0-SNAPSHOT-all.jar提示
-all 后缀表示 Fat JAR,包含了所有依赖(除了 compileOnly 的依赖)。
增量构建
Gradle 支持增量构建,只重新构建发生变化的部分:
bash
# 第一次构建
./gradlew build
# BUILD SUCCESSFUL in 45s
# 修改代码后再次构建
./gradlew build
# BUILD SUCCESSFUL in 5s(只重新构建了变化的部分)强制重新构建
如果需要强制重新构建所有模块:
bash
# 清理并重新构建
./gradlew clean build
# 或者使用强制参数
./gradlew setupDevServer -Pforce构建常见问题
Q: 构建失败,提示 JDK 版本错误?
A: 检查以下配置:
bash
# 验证 JDK 21
java -version
# 验证 JAVA_HOME
echo $JAVA_HOME # macOS/Linux
echo $env:JAVA_HOME # Windows PowerShell
# 验证 JAVA_HOME_17
echo $JAVA_HOME_17 # macOS/Linux
echo $env:JAVA_HOME_17 # Windows PowerShellQ: 构建失败,提示网络错误?
A: 检查网络连接,或配置代理:
bash
# 配置 HTTP 代理
./gradlew build -Dhttp.proxyHost=127.0.0.1 -Dhttp.proxyPort=7890
# 配置 HTTPS 代理
./gradlew build -Dhttps.proxyHost=127.0.0.1 -Dhttps.proxyPort=7890Q: 构建失败,提示依赖下载失败?
A: 尝试以下方法:
bash
# 清理 Gradle 缓存
rm -rf ~/.gradle/caches
# 重新构建
./gradlew build --refresh-dependenciesQ: 构建失败,提示 Floodgate 构建失败?
A: 确保:
JAVA_HOME_17环境变量已设置- JDK 17 已正确安装
- 子模块已初始化
Q: 如何查看构建详细日志?
A: 使用以下参数:
bash
# 信息级别
./gradlew build --info
# 调试级别
./gradlew build --debug
# 堆栈跟踪
./gradlew build --stacktrace构建最佳实践
1. 定期清理构建
bash
# 清理构建输出
./gradlew clean
# 清理开发服务器
./gradlew cleanDevServer2. 使用增量构建
增量构建可以显著加快开发速度,只在必要时使用 clean。
3. 检查构建输出
构建完成后,检查 JAR 文件是否正确生成:
bash
# 查看 JAR 文件大小
ls -lh */build/libs/*-all.jar
# 验证 JAR 文件内容
jar tf bedwars/build/libs/bedwars-1.0-SNAPSHOT-all.jar | head -204. 使用构建缓存
Gradle 支持构建缓存,可以加速后续构建:
bash
# 启用构建缓存
./gradlew build --build-cache下一步
项目构建完成后,让我们继续学习 开发服务器。