Как сделать исходный код ссылки IntelliJ в другом модуле?

У меня типичная структура проекта:

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

И core-module и application импортируются в IntelliJ и сохраняются в автоматическом импорте. В build.gradle application core-module ссылается на:

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

где 0.2.0-SNAPSHOT – это текущая версия, объявленная в core-module gradle.properties core-module .

В application , когда я пытаюсь просмотреть класс из core-module , я попал в исходный код в core-module-0.2.0-SNAPSHOT-sources.jar вместо соответствующего исходного кода core-module модуля core-module ,

Я знаю, что могу вручную добавить core-module в качестве зависимости от модуля в application , но в следующий раз, когда все изменения в build.gradle application будут импортированы, автоматический импорт перепишет эту зависимость.

Есть ли способ сделать IntelliJ автоматически распознанным, что я пытаюсь просмотреть класс из другого модуля и пойти туда вместо загруженных источников jar?

Кроме того, есть ли способ заставить IntelliJ всегда отдавать предпочтение core-module модуля над баком зависимости, а не только для просмотра кода, но для построения / запуска / отладки / и т. Д.?

Все исходные файлы находятся в Kotlin, FWIW.

Используйте композитную композицию 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/

На вкладке «Грейдл» щелкните правой кнопкой мыши свой прикладной модуль. В меню будет опция «составные сборки». В появившемся диалоговом окне проверьте модуль «core-module» и закройте его.

Теперь щелкните правой кнопкой мыши на модуле приложения и выполните «обновить проект Gradle». Я обнаружил, что если я этого не сделаю, зависимость не будет обновляться правильно.

Чтобы проверить, посмотрите на зависимости в sourceSets. Вместо версии # он теперь будет выглядеть как зависимость от модуля.

Это дает много преимуществ. Одним из них является навигационная система, которую вы искали. Кроме того, любые изменения, внесенные в базовый модуль, немедленно доступны и используются для приложения.

Рефакторинг метода в основном модуле, который используется приложением, и IntelliJ будет реорганизовывать все способы использования.

Наслаждайтесь!