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
相关产品推荐
相关产品推荐

