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

问题描述 投票:3回答:1

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

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

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

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

其中0.2.0-SNAPSHOTcore-modulegradle.properties中声明的当前版本。

application中,当我尝试从core-module查看类时,我被带到core-module-0.2.0-SNAPSHOT-sources.jar中的源代码,而不是core-module模块中的相应源代码。

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

是否有任何方法可以使IntelliJ自动识别我正在尝试从另一个模块查看一个类而不是下载的源jar?

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

所有源文件都在Kotlin,FWIW中。

intellij-idea gradle kotlin
1个回答
2
投票

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

IntelliJ还支持此功能。这是在2016年增加的。

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

在Gradle选项卡中,右键单击您的应用程序模块。该菜单将具有“复合构建”选项。在出现的对话框中,选中“core-module”模块并关闭。

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

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

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

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

请享用!

© www.soinside.com 2019 - 2024. All rights reserved.