具有 gradle 的 IntelliJ 在编译时出现不一致
IntelliJ with gradle gives inconsistency in compilation
我正在使用带有 gradle 的 IntelliJ IDEA Ultimate 编写 Minecraft 插件。我已将依赖项 org.spigotmc:spigot-api:1.13.2-R0.1-SNAPSHOT
添加为 compileOnly
。在开发过程中,我注意到 gradle 以不同于 IntelliJ 的方式编译我的代码。例如,IntelliJ 无法在 Boat
上接受 addPassenger
,但 gradle 编译了它。相反,如果我把它改成 setPassenger
,IntelliJ 并没有将其标记为错误,但是 gradle 编译失败。我试图使缓存无效、重新导入、清理,甚至删除 %userprofile%\.gradle
目录,但没有任何帮助。作为 POC,我将 compileOnly
更改为 compile
并且运行良好,IntelliJ 和 gradle 编译结果一致。什么原因?
好的,我找到了解决方案(忘记了这个问题)。
我一直在使用多个依赖项,一个加载另一个我在 build.gradle
中隐式加载的旧版本。但是,它们并不是完全相同的依赖关系,而是平行的依赖关系。所以 gradle 无法选择一个依赖的更高版本。解决方案是排除这个显式加载的依赖项,并且一切正常。
之前:
dependencies {
compileOnly 'com.sk89q.worldedit:worldedit-bukkit:7.0.1'
compileOnly group: 'org.spigotmc', name:'spigot-api', version: '1.15.1-R0.1-SNAPSHOT'
}
之后:
dependencies {
compileOnly('com.sk89q.worldedit:worldedit-bukkit:7.0.1') {
exclude `org.bukkit:bukkit:1.15.1-R0.1-SNAPSHOT`
}
compileOnly group: 'org.spigotmc', name:'spigot-api', version: '1.15.1-R0.1-SNAPSHOT'
}
我正在使用带有 gradle 的 IntelliJ IDEA Ultimate 编写 Minecraft 插件。我已将依赖项 org.spigotmc:spigot-api:1.13.2-R0.1-SNAPSHOT
添加为 compileOnly
。在开发过程中,我注意到 gradle 以不同于 IntelliJ 的方式编译我的代码。例如,IntelliJ 无法在 Boat
上接受 addPassenger
,但 gradle 编译了它。相反,如果我把它改成 setPassenger
,IntelliJ 并没有将其标记为错误,但是 gradle 编译失败。我试图使缓存无效、重新导入、清理,甚至删除 %userprofile%\.gradle
目录,但没有任何帮助。作为 POC,我将 compileOnly
更改为 compile
并且运行良好,IntelliJ 和 gradle 编译结果一致。什么原因?
好的,我找到了解决方案(忘记了这个问题)。
我一直在使用多个依赖项,一个加载另一个我在 build.gradle
中隐式加载的旧版本。但是,它们并不是完全相同的依赖关系,而是平行的依赖关系。所以 gradle 无法选择一个依赖的更高版本。解决方案是排除这个显式加载的依赖项,并且一切正常。
之前:
dependencies {
compileOnly 'com.sk89q.worldedit:worldedit-bukkit:7.0.1'
compileOnly group: 'org.spigotmc', name:'spigot-api', version: '1.15.1-R0.1-SNAPSHOT'
}
之后:
dependencies {
compileOnly('com.sk89q.worldedit:worldedit-bukkit:7.0.1') {
exclude `org.bukkit:bukkit:1.15.1-R0.1-SNAPSHOT`
}
compileOnly group: 'org.spigotmc', name:'spigot-api', version: '1.15.1-R0.1-SNAPSHOT'
}