所以它实际上似乎主要是工作,两个项目都是整个项目的子模块。但主要的烦恼是,当我在其中一个模块中调试时,如果代码调用另一个模块中的某些东西,它会从Gradle缓存中获取依赖关系而不是其他项目/模块的代码,并从其中获取反编译的.class文件。缓存而不是实际的源代码。
我想找到一种方法,以便Intellij识别出一个模块正在使用另一个模块并使用模块本身的源代码,当然这些源代码已在本地文件系统中检出并可用。
答案 0 :(得分:2)
关于将多个项目设置为“子模块”,请参阅gradle documentation here,尽管gradle lingo通常将它们称为子项目。
基本上,如果你有一些项目是根项目的子项目,你可以设置这样的文件夹结构:
root
├───build.gradle
├───settings.gradle
│
├───subA
│ └───build.gradle
├───subB
│ └───build.gradle
└───subC
└───build.gradle
在您的根settings.gradle
中,您可以通过添加以下内容来包含子项目:
include 'subA', 'subB', 'subC'
从现在开始,您可以通过名称从任何其他项目引用设置中的任何项目:project(':subB')
所以如果你想将subC
添加为subA
的编译时依赖关系,那么在subA的build.gradle中你可以:
dependencies{
compile project(':subC')
}
以这种方式声明,依赖关系是subC的当前文件,而不是存储库中最后构建/安装的二进制文件。你也可以让root项目只是一个没有自己代码的持有者项目。
答案 1 :(得分:1)
我在开发模式中使用依赖项替换取得了一些成功,如下所示:
if (project.has("devMode")) {
configurations.all {
resolutionStrategy.dependencySubstitution {
substitute module("foo.group:bar") with project(":bar")
}
}
}
希望这样的事情对你也有用。
编辑:请注意,您还必须在settings.gradle中有条件地添加:bar
项目