如何在另一个模块中制作IntelliJ参考源代码?

时间:2017-12-17 00:54:59

标签: intellij-idea gradle kotlin

我有一个典型的项目结构:

- root-dir (not a project)
 \- core-module (a gradle project)
 \- application (a gradle project)

core-moduleapplication都会导入IntelliJ并保持自动导入。在application' build.gradle中,core-module被引用为:

compile('my-group-id:core-module:0.2.0-SNAPSHOT')

其中0.2.0-SNAPSHOTcore-module' s gradle.properties中声明的当前版本。

application中,当我尝试查看来自core-module的课程时,我带来core-module-0.2.0-SNAPSHOT-sources.jar中的源代码,而不是core-module中的相应源代码{1}}模块。

我知道我可以在core-module中手动添加application作为模块依赖项,但下次application build.gradle中的任何内容发生变化时,自动导入将会覆盖那种依赖。

有没有办法让IntelliJ自动识别我试图从另一个模块查看一个类而不是下载的源jar?

此外,有没有办法让IntelliJ总是更喜欢core-module模块而不是依赖jar,不仅用于代码查看,还用于构建/运行/调试/等。

所有源文件都在Kotlin,FWIW。

1 个答案:

答案 0 :(得分:2)

使用Gradle的复合构建。 Gradle具有复合构建https://docs.gradle.org/4.4/userguide/composite_builds.html,允许其中一个包含'直接构建,而不是从存储库构建。

IntelliJ也支持此功能。这是在2016.3中添加的。

这是一个网络直播:https://blog.jetbrains.com/idea/2017/03/webinar-recording-composite-builds-with-gradle/

在Gradle选项卡中,右键单击您的应用程序模块。该菜单将具有“复合构建”功能。选项。在出现的对话框中,检查核心模块'模块和关闭。

现在,右键单击应用程序模块并执行刷新Gradle项目'。我发现,如果我不这样做,依赖关系不会得到正确更新。

要验证,请查看sourceSets下的依赖项。而不是版本#,它现在看起来像模块依赖。

这提供了许多好处。一个是您正在寻找的导航。此外,核心模块中的任何更改都可立即使用,并用于应用程序。

重构应用程序使用的核心模块中的方法,IntelliJ将重构所有用法。

享受!