如何使IntelliJ参考源代码在另一个模块?
我有一个典型的项目结构:
- root-dir (not a project) \- core-module (a gradle project) \- application (a gradle project)
core-module
和application
都被导入IntelliJ并保持在自动导入。 在application
的build.gradle
, core-module
被引用为:
compile('my-group-id:core-module:0.2.0-SNAPSHOT')
其中0.2.0-SNAPSHOT
是在core-module
的gradle.properties
声明的当前版本。
在application
,当我尝试从core-module
查看一个类时,我将其带入core-module-0.2.0-SNAPSHOT-sources.jar
中的源代码,而不是core-module
模块中的相应源代码。
我知道我可以在application
手动添加core-module
作为模块依赖项,但下一次application
的build.gradle
任何内容build.gradle
改变,自动导入将会覆盖该依赖项。
有没有什么办法让IntelliJ自动识别,我想从另一个模块查看类,并去那里,而不是下载的源代码jar?
此外,有没有什么办法让IntelliJ总是比依赖jar更喜欢core-module
模块,不仅用于代码查看,还用于构建/运行/调试等等。
所有的源文件都在Kotlin,FWIW。
使用Gradle的组合构建。 Gradle的复合构建https://docs.gradle.org/4.4/userguide/composite_builds.html允许直接“包含”构建,而不是从存储库中进行构建。
IntelliJ也支持这个function。 这是在2016年添加的。
这是一个网络广播: https : //blog.jetbrains.com/idea/2017/03/webinar-recording-composite-builds-with-gradle/
在Gradle选项卡中,右键单击您的应用程序模块。 菜单将有一个“复合构建”选项。 在出现的对话框中,检查“核心模块”模块并关闭。
现在,右键单击应用程序模块并执行“刷新Gradle项目”。 我发现如果我不这样做,依赖不会正确更新。
要validation,请查看sourceSets下的依赖关系。 它现在看起来像一个模块依赖关系。
这提供了许多好处。 一个是你正在寻找的导航。 另外,核心模块中所做的任何更改都立即可用,并用于应用程序。
重构应用程序使用的核心模块中的方法,IntelliJ将重构所有用法。
请享用!