概述
什么是构建?
Section titled “什么是构建?”构建就是将源代码转换成可以运行的插件(jar 文件)的过程。就像把散落的零件组装成一个完整的机器一样。
选择合适的构建方式
Section titled “选择合适的构建方式”根据你的情况,可以选择以下三种方式之一:
-
使用 IDEA(推荐)
- 适合:新手,不熟悉命令行的用户
- 优点:图形界面,操作直观
- 缺点:需要安装 IDEA
-
使用终端
- 适合:熟悉命令行的用户,服务器环境
- 优点:轻量级,适合自动化
- 缺点:需要记忆命令
-
使用 GitHub Actions
- 适合:需要自动化发布的项目
- 优点:全自动化,不需要本地构建
- 缺点:需要了解 GitHub 相关知识
选择构建工具
Section titled “选择构建工具”项目可能使用以下两种构建工具之一:
-
Maven
- 特点:配置简单,学习曲线平缓
- 适合:新手,小型项目
- 配置文件:
pom.xml
-
Gradle
- 特点:功能强大,配置灵活
- 适合:大型项目,需要复杂构建逻辑
- 配置文件:
build.gradle或build.gradle.kts
识别项目类型
Section titled “识别项目类型”在项目根目录下查看:
-
如果看到
pom.xml- 这是 Maven 项目
- 构建产物在
target目录 - 使用
mvn命令构建
-
如果看到
build.gradle或build.gradle.kts- 这是 Gradle 项目
- 构建产物在
build/libs目录 - 使用
gradle命令构建
-
如果看到
gradlew或gradlew.bat- 这是带有 Gradle Wrapper 的 Gradle 项目
- 特点:
- 不需要安装 Gradle
- 自动下载正确版本
- 所有人使用相同版本
项目结构说明
Section titled “项目结构说明”Maven 项目结构
Section titled “Maven 项目结构”文件夹项目根目录/
文件夹src/ 源代码目录
文件夹main/ 主要代码目录
文件夹java/ Java 源代码
文件夹com/
文件夹example/
文件夹plugin/ 插件包
- Main.java 插件主类
文件夹commands/ 命令类
- …
文件夹listeners/ 监听器类
- …
文件夹utils/ 工具类
- …
文件夹resources/ 资源文件目录
- plugin.yml 插件配置文件
- config.yml 插件默认配置
文件夹messages/ 语言文件
- …
文件夹test/ 测试代码目录
文件夹java/ 测试源代码
- …
文件夹resources/ 测试资源
- …
文件夹target/ 构建输出目录
- …
- pom.xml Maven 项目配置文件
- README.md 项目说明文件
Gradle 项目结构
Section titled “Gradle 项目结构”文件夹项目根目录/
文件夹src/ 源代码目录
文件夹main/ 主要代码目录
文件夹java/ Java 源代码
文件夹com/
文件夹example/
文件夹plugin/ 插件包
- Main.java 插件主类
文件夹commands/ 命令类
- …
文件夹listeners/ 监听器类
- …
文件夹utils/ 工具类
- …
文件夹kotlin/ Kotlin 源代码(如果使用)
- …
文件夹resources/ 资源文件目录
- plugin.yml 插件配置文件
- config.yml 插件默认配置
文件夹messages/ 语言文件
- …
文件夹test/ 测试代码目录
文件夹java/ 测试源代码
- …
文件夹kotlin/ Kotlin 测试代码
- …
文件夹resources/ 测试资源
- …
文件夹build/ 构建输出目录
文件夹libs/ 构建产物(jar 文件)
- …
文件夹gradle/ Gradle 包装器目录
文件夹wrapper/
- …
- build.gradle Gradle 构建脚本
- settings.gradle Gradle 设置文件
- gradlew Gradle 包装器脚本 (Unix)
- gradlew.bat Gradle 包装器脚本 (Windows)
- README.md 项目说明文件
重要文件说明
Section titled “重要文件说明”1. 配置文件
Section titled “1. 配置文件”-
plugin.yml:插件的核心配置文件
name: MyPlugin # 插件名称version: 1.0.0 # 插件版本main: com.example.plugin.Main # 主类路径api-version: "1.19" # API 版本commands: # 命令配置mycmd:description: 示例命令usage: /mycmd <参数> -
config.yml:插件的默认配置文件
settings:debug: falselanguage: zh_CNfeatures:feature1: truefeature2: false
2. 构建配置文件
Section titled “2. 构建配置文件”-
Maven (pom.xml):
<dependencies><dependency><groupId>io.papermc.paper</groupId><artifactId>paper-api</artifactId><version>1.19.4-R0.1-SNAPSHOT</version><scope>provided</scope></dependency></dependencies> -
Gradle (build.gradle):
dependencies {compileOnly 'io.papermc.paper:paper-api:1.19.4-R0.1-SNAPSHOT'}