一个用于直接与 BBSMC 交互的 Gradle 插件,支持上传构建产物和同步项目描述。
本项目 fork 自 Modrinth 的 Minotaur,适配 BBSMC 平台使用。
要使用此插件,您必须将其添加到 Gradle 构建脚本中。之后,您可以使用 bbsmc 任务将版本上传到 BBSMC。
Minotaur 需要具有以下权限范围的个人访问令牌:
CREATE_VERSION(如果运行bbsmc任务)PROJECT_WRITE(如果运行bbsmcSyncBody任务)
您可以在 BBSMC 账户设置页面 生成令牌。如果您提供的令牌没有所有必需的权限范围,您将收到 Invalid Authentication Credentials 错误。
Groovy DSL
// build.gradle
plugins {
id "net.bbsmc.minotaur" version "2.+"
// 使用 2.+ 最安全,可以获得最新功能和
// 错误修复,而无需担心破坏性更改。
}
// settings.gradle
// 这可能已经存在。
pluginManagement {
repositories {
gradlePluginPortal()
}
}下一步是配置上传到 BBSMC 的任务。这允许您配置上传并控制何时以及如何上传版本。
// build.gradle
bbsmc {
token = System.getenv("BBSMC_TOKEN") // 记得设置 BBSMC_TOKEN 环境变量,否则会失败 - 确保它保持私密!
projectId = "my-project" // 可以是项目 ID 或 slug。两者都可以!
versionNumber = "1.0.0" // 您不需要手动设置。如果 BBSMC 已有此版本会失败
versionType = "release" // 这是默认值 -- 也可以是 `beta` 或 `alpha`
uploadFile = jar // 使用 Loom 时,必须设置为 `remapJar` 而不是 `jar`!
gameVersions = ["1.18", "1.18.1"] // 必须是数组,即使只有一个版本
loaders = ["fabric"] // 也必须是数组 - 如果您使用 Loom 或 ForgeGradle 则无需指定
dependencies { // 用于创建依赖的特殊 DSL
// scope.type
// scope 可以是 `required`、`optional`、`incompatible` 或 `embedded`
// type 可以是 `project` 或 `version`
required.project "fabric-api" // 创建对 Fabric API 的必需依赖
optional.version "sodium", "mc1.19.3-0.4.8" // 创建对特定版本 Sodium 的可选依赖
}
}Kotlin DSL
// build.gradle.kts
plugins {
id("net.bbsmc.minotaur") version "2.+"
// 使用 2.+ 最安全,可以获得最新功能和
// 错误修复,而无需担心破坏性更改。
}
// settings.gradle.kts
// 这可能已经存在。
pluginManagement {
repositories {
gradlePluginPortal()
}
}下一步是配置上传到 BBSMC 的任务。这允许您配置上传并控制何时以及如何上传版本。
// build.gradle.kts
bbsmc {
token.set(System.getenv("BBSMC_TOKEN")) // 记得设置 BBSMC_TOKEN 环境变量,否则会失败 - 确保它保持私密!
projectId.set("my-project") // 可以是项目 ID 或 slug。两者都可以!
versionNumber.set("1.0.0") // 您不需要手动设置。如果 BBSMC 已有此版本会失败
versionType.set("release") // 这是默认值 -- 也可以是 `beta` 或 `alpha`
uploadFile.set(tasks.jar) // 使用 Loom 时,必须设置为 `remapJar` 而不是 `jar`!
gameVersions.addAll("1.18", "1.18.1") // 必须是数组,即使只有一个版本
loaders.add("fabric") // 也必须是数组 - 如果您使用 Loom 或 ForgeGradle 则无需指定
dependencies { // 用于创建依赖的特殊 DSL
// scope.type
// scope 可以是 `required`、`optional`、`incompatible` 或 `embedded`
// type 可以是 `project` 或 `version`
required.project("fabric-api") // 创建对 Fabric API 的必需依赖
optional.version("sodium", "mc1.19.3-0.4.8") // 创建对特定版本 Sodium 的可选依赖
}
}结合 bbsmc {...} 块中的 syncBodyFrom 属性,您可以设置同步,例如将项目的 README.md 与 BBSMC 上的项目描述同步。
例如:
// build.gradle
bbsmc {
// ...
syncBodyFrom = rootProject.file("README.md").text
}这将把项目根目录中 README.md 文件的内容同步到您的项目。
如果您有一些内容想保留在 README.md 中但不想出现在 BBSMC 项目描述中,您也可以在文件中添加注释。<!-- bbsmc_exclude.start --> 和 <!-- bbsmc_exclude.end --> 之间的任何内容都将被排除。
这不会在 bbsmc 任务中发生;您必须单独使用 bbsmcSyncBody 任务来完成此操作。您可以通过使 bbsmcSyncBody 任务依赖于 bbsmc 来确保每次发布时都同步项目描述:
tasks.bbsmc.dependsOn(tasks.bbsmcSyncBody)请谨慎使用此任务!一旦描述被更改,您无法恢复。您可以使用 debugMode 来确保要上传的内容是您想要的。
以下属性可以在 bbsmc {...} 块中设置。
| 属性 | 必需 | 描述 | 默认值 |
|---|---|---|---|
| apiURL | 否 | 用于上传文件的 API 端点 URL。 | https://api.bbsmc.net/v2 |
| token | 否 | BBSMC API 的有效 API 令牌。 | BBSMC_TOKEN 环境变量 |
| projectId | 是 | 要上传到的项目 ID。 | |
| versionNumber | 否 | 版本的版本号。 | version 声明 |
| versionName | 否 | 版本的名称。 | versionNumber |
| changelog | 否 | 文件的更新日志。允许 Markdown 格式。 | No changelog was specified. |
| uploadFile | 是 | 要上传的文件。可以是实际文件或文件任务。 | |
| additionalFiles | 否 | 要上传到版本的附加文件数组。 | |
| versionType | 否 | 版本的稳定性级别。可以是 release、beta 或 alpha。 |
release |
| gameVersions | 是 | 此版本支持的游戏版本数组。 | 根据您使用的 Gradle 插件自动检测 |
| loaders | 否 | 此版本支持的模组加载器数组。 | 根据您使用的 Gradle 插件自动检测 |
| dependencies | 否 | 上传版本的依赖项。 | |
| failSilently | 否 | 当为 true 时,上传失败不会导致构建失败。 | false |
| detectLoaders | 否 | 是否自动检测模组加载器。 | true |
| autoAddDependsOn | 否 | 是否自动从上传文件添加任务依赖。 | true |
| debugMode | 否 | 不实际上传版本,而是打印要上传的数据。 | false |
| syncBodyFrom | 否 | 在 bbsmcSyncBody 任务中用于同步描述的文本。 |
注意: 在大多数情况下,gameVersions 和 loaders 属性可以自动检测。这在使用 ForgeGradle 和 Fabric Loom 的环境中完成。
以下属性只能通过 tasks.bbsmc.<property> 访问。
| 名称 | 描述 |
|---|---|
| uploadInfo | 来自 API 服务器的响应。仅在上传成功完成后存在。 |
| errorInfo | 来自 API 服务器的响应。仅在上传失败后存在。 |
| wasUploadSuccessful() | 检查上传是否成功。应在访问 uploadInfo 或 errorInfo 之前使用。 |
| 属性 | 类型 | 描述 |
|---|---|---|
| id | String | 上传版本的 ID。 |
| projectId | String | 此版本所属模组的 ID。 |
| authorId | String | 发布此版本的作者 ID。 |
| featured | Boolean | 版本是否被推荐。 |
| name | String | 此版本的名称。 |
| versionNumber | String | 版本号。理想情况下应遵循语义化版本。 |
| changelog | String | 此模组版本的更新日志。 |
| datePublished | Date | 此版本发布的日期。 |
| downloads | Integer | 此特定版本的下载次数。 |
| versionType | VersionType | 发布类型 - alpha、beta 或 release。 |
| files | List | 此版本可供下载的文件列表。 |
| gameVersions | List | 此模组版本支持的 Minecraft 版本列表。 |
| loaders | List | 此版本支持的加载器。 |
| dependency | Dependency | 此版本依赖的模组列表。 |
| 属性 | 类型 | 描述 |
|---|---|---|
| error | String | 发生的错误类型,例如授权错误。 |
| description | String | 来自 API 的错误消息。 |
本项目 fork 自 Modrinth/minotaur,适配 BBSMC 平台。