Gradle将源集从java根项目泄漏到非java子项目
假设您有一个根项目和一个子项目的简单多项目构建:Gradle将源集从java根项目泄漏到非java子项目,java,gradle,multi-project,subproject,source-sets,Java,Gradle,Multi Project,Subproject,Source Sets,假设您有一个根项目和一个子项目的简单多项目构建: root |--sub | `----build.gradle |----build.gradle `----settings.gradle settings.gradle: include ':sub' root/build.gradle: apply plugin: 'java' sourceSets { println "sourceSets:" + main.java.srcDirs } sub/build.g
root
|--sub
| `----build.gradle
|----build.gradle
`----settings.gradle
settings.gradle:
include ':sub'
root/build.gradle:
apply plugin: 'java'
sourceSets {
println "sourceSets:" + main.java.srcDirs
}
sub/build.gradle:
apply plugin: 'java'
sourceSets {
println "sourceSets:" + main.java.srcDirs
}
然后sourceSet
设置从根项目泄漏到sub
项目,即使它没有指定java或java基本插件
我遇到了一个问题,一个自定义插件正在读取项目的源代码集。当它应用于没有应用java插件的子项目时,它基本上读取根项目的sourceSet,实际上它应该失败,因为没有应用java插件而缺少sourceSet。我知道这主要是因为自定义插件写得不好,但我认为在某些情况下,这可能会导致一些不必要的意外
java插件的这种“泄漏行为”是故意的吗
我知道这是一个写得很糟糕的问题,但在解决gradle的问题时,第一个要去的地方也是。你确定
apply plugin:'java'
不在allprojects{…}
或subprojects{…}
根项目的闭包中吗?@Lance java Yes,我确信这个插件只应用于根项目。