Вы здесь:

Описан способ организации разработки, когда один из модулей (library) используется в нескольких проектах (application1, application2, ... applicationN). Чаще, и возможно проще, переиспольуемый модуль разрабатывается отдельно и затем подключается как зависимость через репозиторий maven. При изменении library его maven версия получает новый идентификатор и это изменение должно быть учтено в целевых проектах. Заготовка проекта: https://github.com/cherepakhin/multi-module.
В проекте два модуля Application и Library.


settings.gradle всего проекта:

rootProject.name = 'multi-module'

include 'library'
include 'application'

В Idea выглядит так:

allure_result_test

Log сборки:

multi_module$ ./gradlew build
Module Application. On JavaCompile. Executing TASK: compileJava
----------------
Module Application. On JavaCompile. Executing TASK: compileTestJava
----------------
Module Library. On JavaCompile. Executing TASK: compileJava
----------------
Module Library. On JavaCompile. Executing TASK: compileTestJava
----------------
Module Application. On Test. Executing TASK: test
----------------
Module Library. On Test. Executing TASK: test
----------------

BUILD SUCCESSFUL in 4s

При сборке, сначала все модули компилируются (...On JavaCompile...) в след. порядке:
Module Application:

  • compile Application MAIN
  • compile Application TEST

Module Library:

  • compile Library MAIN
  • compile Library TEST

Затем выполняются тесты (On Test) (т.к. build):

  • Test Module Application
  • Test Module Library

Тест отдельного модуля:

$ ./gradlew :library:test

Сборка отдельного модуля:

$ ./gradlew :application:publish
$ ./gradlew :library:publish

Результат:

nexus_multi_module

Пересборка модуля после deploy зависимого модуля:

$./gradlew --refresh-dependencies :application:compileJava

Замечание для многомодульного проекта Maven
Версии библиотек можно указать в корневом pom.xml в секции dependencyManagement:

<dependencyManagement>
  <dependencies>
    <dependency>
        <groupId>group-a</groupId>
        <artifactId>artefact1</artifactId>
        <version>1.0.0</version>
    </dependency>
    ...
  </dependencies>
</dependencyManagement>

И в модулях версию dependency можно не указывать:

<dependencies>
    <dependency>
        <groupId>group-a</groupId>
        <artifactId>artefact1</artifactId>
    </dependency>
</dependencies>

https://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html#Dependency_Management.