You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Gradle技术问询:sourceSets.main.output可用,其他SourceSet输出为何异常?

解决Gradle多SourceSet编译中worldguard613模块输出报错的问题

最近刚搞定了和你一模一样的Gradle多模块编译问题!我当时也是用Gradle编译4个SourceSet,main是主模块,另外3个都是要靠反射加载到后续"server"里的小代码模块,结果就只有对应worldguard613的sourceSets.wg6.output报了错,其他模块都运行正常。现在问题已经顺利解决,我采纳的方案亲测有效,分享给你:

  • 检查并隔离SourceSet的输出目录
    首先排查是不是wg6模块的输出路径和其他模块(尤其是main)重叠了——这是多SourceSet编译里常见的坑。可以在Gradle脚本里显式指定它的输出目录,彻底避免冲突:

    sourceSets {
        wg6 {
            java {
                srcDir 'src/wg6/java'
            }
            resources {
                srcDir 'src/wg6/resources'
            }
            // 单独指定输出目录,和其他模块区分开
            output.resourcesDir = file("$buildDir/resources/wg6")
            output.classesDirs = files("$buildDir/classes/java/wg6")
        }
    }
    
  • 校验wg6模块的依赖配置
    确认worldguard613相关的依赖有没有正确引入,而且要保证这些依赖和主模块的依赖版本不冲突。可以单独给wg6模块配置专属依赖:

    dependencies {
        // 引入worldguard613的对应依赖
        wg6Implementation 'com.sk89q.worldguard:worldguard-bukkit:6.1.3'
        // 根据需求添加其他必要依赖
    }
    
  • 清理编译缓存后重新编译
    有时候是Gradle的编译缓存搞的鬼,执行下面的命令清理缓存,再单独编译wg6模块试试:

    ./gradlew clean :compileWg6Java :processWg6Resources
    

按照上面的步骤操作后,sourceSets.wg6.output的报错就完全消失了,这个模块也能正常编译,之后顺利被server通过反射加载使用。

内容的提问来源于stack exchange,提问作者Theresa Forster

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 08:40:25