让Intellij IDEA(13+)识别Gradle模块的相互依赖性

Dav*_*les 13 intellij-idea gradle

我有两个Gradle项目,我们称之为蓝色和绿色.绿色取决于蓝色,如下所述build.gradle:

repositories {
  mavenLocal()
}

dependencies {
    compile 'org.example:blue:1.0'
}
Run Code Online (Sandbox Code Playgroud)

Blue使用Maven插件构建适当的工件:

apply plugin: 'maven'
group = 'org.example'
version = '1.0'
Run Code Online (Sandbox Code Playgroud)

如果我install在Blue上运行任务,它会创建一个JAR和一个POM并将它们放入我的~/.m2/repository,没问题.

我将Blue导入build.gradle到我的IDEA项目中,它为Blue创建了一个模块,同样没问题.

如果我现在将Green导入build.gradle到我的IDEA项目中,它会为Green创建一个模块,从存储库中获取Mavenized版本的Blue,创建一个相应的库,并将Blue库作为依赖项添加到Green模块.

但是,如果我现在在Blue中进行代码更改,那么代码更改不会在Green中获取.Green将继续使用Maven存储库中现在陈旧的副本.获得蓝色更改的唯一方法是重新安装Blue,至于重构Blue中的某些内容并将重构覆盖为Green中的用法,请忘掉它.问题.

如何让IDEA识别我的Gradle项目与其相应的IDEA模块之间的相互依赖性?


编辑添加:多模块实际上不是一个选项,因为所涉及的依赖项在多个应用程序项目之间共享(更不用说其他共享库项目),并且不能完全适合单个分层目录结构.


编辑添加:为了指向我最终想出的内容,请参阅此答案.当您想要同时处理项目及其依赖项时,仍然需要手动创建多模块项目,但它允许您或多或少地自由地交换源和二进制依赖项.

Dav*_*les 6

发现了以下解决方法:

导入绿色后build.gradle,打开绿色模块的模块设置(或在项目结构下选择它).然后,在Dependencies选项卡上,手动添加'live'依赖项并将它们移到列表中的Gradle版本之上:

手动添加的

这将通过Green上的"刷新外部项目"持续存在build.gradle,这在您编辑它以添加第三方库等时很有用.

请注意,您可以删除Gradle版本(Gradle: blue-2.0-snapshot等),但在刷新项目时会重新添加它们.

另外值得注意的是:这将允许您一起实时编辑和重构蓝色,黄色和绿色,但如果您因任何原因需要进行Gradle构建(例如,如果您使用Gradle的jettyRun任务来启动Web应用程序),那么我需要确保你Gradle- install蓝色和黄色,因为(只要我们不谈论多模块项目)Gradle只会使用repo的罐装版本.

  • 不幸的是,在 IDEA 2017.2 中这不再有效:在执行 gradle 刷新(和(自动)保存)之后,手动添加的模块依赖项丢失了。 (2认同)