如何将单个源集添加到多个子项目?
首先 ...是的,我知道这有多荒谬。这只是我必须做的事情。
设置
一种
sourceSets {
main {
java {
srcDirs = ["src",
"$rootDir/source_sets/1/src",
"$rootDir/source_sets/2/src",
"$rootDir/source_sets/3/src"
]
}
}
}
乙sourceSets {
main {
java {
srcDirs = ["src",
"$rootDir/source_sets/1/src",
"$rootDir/source_sets/2/src",
"$rootDir/source_sets/3/src",
"$rootDir/source_sets/4/src"
]
}
}
}
CsourceSets {
main {
java {
srcDirs = ["src",
"$rootDir/interfaces/source_sets/1/src",
"$rootDir/interfaces/source_sets/2/src",
"$rootDir/interfaces/source_sets/4/src",
"$rootDir/interfaces/source_sets/5/src"
]
}
}
}
设置.gradleinclude(":interfaces/A")
project(":interfaces/A").name = "A"
include(":interfaces/A")
project(":interfaces/A").name = "A"
include(":interfaces/A")
project(":interfaces/A").name = "A"
问题是 4 和 5 无法找到 2 中的类,我的 IDE(IntelliJ)无法解析正确的类路径。我真正需要的是让外部源集表现得好像它们有 3 个单独的副本,而实际上没有 3 个单独的副本,我需要这样做 没有 使用符号/软链接(soft link)。
该解决方案只需要使用 gradle,但它可以使用 JetBrains 的“idea”插件进行 gradle,只要它不涉及提交“.idea”文件夹下的任何文件,但它可以包含内联 xml 或资源文件夹中的文件在 .idea 文件夹之外。
所以是的......这太复杂了,只是......呃!但事实就是如此。
最佳答案
确实。
我没有答案,但这太长了,无法发表评论。所以这里。
我认为这只是 IntelliJ 的问题,而不是使用 Gradle 编译时的问题,对吧?如果是这种情况,您应该尝试根据需要在 IntelliJ 中为您的项目建模,一旦您找到了一种方法,然后弄清楚如何使用自定义 Idea 插件为您完成它。
但是,我很确定 IntelliJ 中的多个模块不能共享相同的“内容根”。所以我只看到你不想要的选项 - 要么复制(同步)源与仅用于 IntelliJ 的新文件夹(不允许修改),创建符号链接(symbolic link)(并不总是可移植)或重组您的外部源,以便它们可以独立编译(这可能不容易)
:-(
关于Gradle:在多个子项目中包含相同的 SourceSet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58290185/