本地可正常构建的项目在JitPack上构建失败求助
问题解决:JitPack构建失败及Folia依赖配置问题
核心错误分析
从构建日志可定位两个关键失败原因:
- Folia依赖配置无效:你给
dev.folia:folia-api指定了targetConfiguration = "runtime",但该依赖的Maven描述符中不存在这个配置,导致Gradle无法解析依赖。 - Java版本环境不匹配:项目本地配置Java 8编译,但JitPack默认使用Java 17构建,存在兼容性差异。
- 产物路径不匹配:JitPack构建时会自动覆盖
group和version参数,但你的发布配置未兼容该逻辑,导致构建后找不到产物。
解决方案
1. 修复Folia依赖配置
移除无效的targetConfiguration = "runtime"配置。如果代码中直接引用了Folia的API类,保留compileOnly;如果仅需运行时依赖且无代码引用,可改用runtimeOnly(需确保代码中无Folia相关import):
dependencies { // ... 其他依赖保留 compileOnly("dev.folia:folia-api:1.20.1-R0.1-SNAPSHOT") // 若确认无代码引用,替换为: // runtimeOnly("dev.folia:folia-api:1.20.1-R0.1-SNAPSHOT") }
2. 统一Java版本
在build.gradle.kts中明确指定Java版本,同时通过jitpack.yml强制JitPack使用Java 8:
- 修改
build.gradle.kts,添加Java工具链配置:
java { toolchain { languageVersion.set(JavaLanguageVersion.of(8)) } } tasks.withType<JavaCompile> { options.encoding = "UTF-8" options.release.set(8) }
- 在项目根目录创建
jitpack.yml文件:
jdk: - openjdk8
3. 调整发布配置兼容JitPack参数
修改publishing块,允许JitPack覆盖group和version参数,确保产物路径匹配预期:
publishing { publications.create<MavenPublication>("maven") { from(components["java"]) groupId = project.findProperty("group")?.toString() ?: group artifactId = "CrypticLib" version = project.findProperty("version")?.toString() ?: version } }
4. 验证并重新构建
本地先执行./gradlew clean publishToMavenLocal验证配置无误,再推送代码到GitHub,重新触发JitPack构建。
完整修改后的build.gradle.kts示例
java.sourceCompatibility = JavaVersion.VERSION_1_8 java.targetCompatibility = JavaVersion.VERSION_1_8 group = "com.github.yufiriamazenta" version = "1.0.0-dev11" plugins { `java-library` `maven-publish` } java { toolchain { languageVersion.set(JavaLanguageVersion.of(8)) } } repositories { mavenLocal() maven("https://repo.rosewooddev.io/repository/public/")//提供spigot maven("https://hub.spigotmc.org/nexus/content/repositories/snapshots/") maven("https://repo.extendedclip.com/content/repositories/placeholderapi/") maven("https://repo.papermc.io/repository/maven-public/") maven("https://jitpack.io") mavenCentral() } dependencies { compileOnly("org.jetbrains:annotations:24.0.1") compileOnly("net.md-5:bungeecord-chat:1.16-R0.4") compileOnly("net.kyori:adventure-api:4.14.0") compileOnly("org.spigotmc:spigot:1.20") compileOnly("dev.folia:folia-api:1.20.1-R0.1-SNAPSHOT") compileOnly("me.clip:placeholderapi:2.11.1") } tasks.withType<JavaCompile> { options.encoding = "UTF-8" options.release.set(8) } publishing { publications.create<MavenPublication>("maven") { from(components["java"]) groupId = project.findProperty("group")?.toString() ?: group artifactId = "CrypticLib" version = project.findProperty("version")?.toString() ?: version } }
内容的提问来源于stack exchange,提问作者YufiriaMazenta
相关产品推荐
相关产品推荐

