Как позволить зависимостям в модулях иметь более высокий приоритет над build.gradle в репозитории верхнего уровня - PullRequest
0 голосов
/ 15 июня 2019

Дерево репозитория моего проекта выглядит следующим образом:

Project
  module1
    module1.gradle
  module2
    module2.gradle
  ...
  build.gradle

Тогда в файле build.gradle есть некоторые зависимости и некоторые принудительные стратегии разрешения, такие как

  configurations.all {
      resolutionStrategy {
        cacheChangingModulesFor 0, 'seconds'
        force 'org.apache.hadoop:hadoop-common:2.5.0-cdh5.3.3',
      }
  }
  dependencies {
    compile(group: 'org.apache.hadoop', name: 'hadoop-common', version: '2.6.0-cdh5.16.1')
  }

Однако, module1.gradle определяет более позднюю версию hadoop-common, например

compile group: 'org.apache.hadoop', name: 'hadoop-common', version: '2.5.0-cdh5.3.3'

Я хочу сделать это обновление до моего module1, module2..moduleX, чтобы использовать '2.6.0-cdh5.16.1'.Некоторые проекты не нуждаются в обновлении и должны продолжать использовать старую версию, поэтому мне нужно сохранить принудительные зависимости в файле build.gradle верхнего уровня.На самом деле, я не хочу касаться каких-либо модулей, которые мне не принадлежат.

Есть ли способ указать на уровне модуля, чтобы ВСЕГДА использовать все, что определено в текущем модуле, вместо наследования отверхний уровень build.gradle?

1 Ответ

1 голос
/ 15 июня 2019

Оператор force(..) на верхнем уровне предназначен для переопределения любой версии, указанной в модулях.

Вы можете переопределить этот оператор force(..), поместив другой оператор force(..) в сборку модуля. Этот второй force оператор оценивается после верхнего уровня, поэтому он переопределит версию модуля.

Вы можете поместить в файл build.gradle для вашего модуля:

configurations.all {
  resolutionStrategy {
    force 'org.apache.hadoop:hadoop-common:2.6.0-cdh5.16.1'
  }
}

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

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