Взаимоисключающие репо в build.gradle с Buildship - PullRequest
0 голосов
/ 11 декабря 2019

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

- A
  - settings.gradle
  - build.gradle
- B ( includes A )
  - build.gradle 

В них я использую стандартные репозитории для зависимостей и плагинов. Мы используем Eclipse с Buildship , и до сих пор разрешение в основном делалось с Refresh Gradle Project.

Проблема: некоторые коллеги и наш CI-сервер, находящиеся в другой сети , должны используйте пользовательский репозиторий для всех зависимостей и плагинов. Для этого виртуального репо требуется проверка подлинности, сертификат и прокси-серверы, чтобы оживить ситуацию.

Попытка указать оба репозитория в build.gradle, но упорядочить их не помогло. Первый сбой приведет к сбою сборки, а один из них всегда не удастся в зависимости от сети. Мысль о том, чтобы иметь в качестве первой строки переменную, которую можно переопределить / прочитать из файла, но поскольку pluginManagement должен быть самым первым элементом в settings.gradle и оценивается раньше всего, эта опция, похоже, тоже выпадает.

Мне нужно было бы легко переключаться между этими репозиториями, но все равно как-то быть совместимо с Buildship.

Я действительно не вижу другого способа, кроме создания нескольких наборов этих файлов, таких как build.1.gradle /settings.1.gradle и перезаписывая стандарт build.gradle / settings.gradle их содержимым с помощью какого-либо сценария или вручную перед каждой сборкой.

Можно ли этого достичь с помощью Gradle или каким-то умным способом, который я мог пропустить?

1 Ответ

0 голосов
/ 13 декабря 2019

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

Я использую этот файл init.gradle (развернут на сервере CI и во внутренней сети в GRADLE_USER_HOME для пользователей), чтобыочистить список репозиториев, определенный в build.gradle, и переопределить репозитории в разделе pluginMangement в settings.gradle.

Соответствующие ссылки: Gradle Docs , аналогичная проблема

...