Могу ли я переопределить зависимость модуля Gradle версией, созданной в том же многомодульном проекте? - PullRequest
0 голосов
/ 22 января 2020

Представьте, что есть проект Gradle с 2 модулями modA и modB. modB зависит от modA.

// within modB's build.gradle
dependencies {
    implementation 'com.example:modA:x.y.z'
}

Я также мог бы определить зависимости проекта верхнего уровня следующим образом:

// within the top level build.gradle
project(':modB') {
    dependencies {
        implementation project(':modA')
    }
}

В этом последнем примере выходные данные modA Компиляция помещается в classpath для компиляции modB.

Что произойдет, если я использую оба в одном проекте: какая версия классов будет скомпилирована в modB? Будет ли это версия x.y.z из modA, или это будут только что скомпилированные версии?

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

1 Ответ

1 голос
/ 22 января 2020

Эти обозначения отличаются:

  1. Сначала запрашивает gradle на go в хранилище (publi c или локальный, это зависит от основного файла gradle) и получает оттуда jar. В этом случае mobB и mobA полностью независимы, поэтому они могут быть построены параллельно.
  2. Second просит gradle использовать локальный проект. Это означает, что mobB требует компиляции mobA, et c.

Для сложных мультипроектов, пожалуйста, рассмотрите также Плагин управления зависимостями Spring . Это позволяет вам определять сложные правила в одном скрипте включения. Например, вы можете поместить логику так: «если проект является внешним клиентом, исключите следующее». В результате вы можете объединить все зависимости и версии в один скрипт, чтобы ваш проект не содержал ничего.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...