Как объявить детали репозитория вне build.gradle

#java #gradle #build.gradle

#java #gradle #build.gradle

Вопрос:

Я использую repositories{} block для объявления репозиториев для разрешения зависимостей в файле build.gradle. Есть ли какой-либо способ объявить репозитории вне файла build.gradle, чтобы мне не приходилось объявлять для любых других проектов.

Я исхожу из фона maven, где мы могли бы объявлять репозитории в settings.xml в папке .m2.

Пожалуйста, посоветуйте.

Комментарии:

1. Я понял это позже. Ответом на это является объявление сведений о репозитории в файле gradle.properties как глобальной переменной в вашей папке .gradle в каталоге пользователя. Вы можете использовать эти глобальные переменные в своем build.gradle для всех локальных проектов.

Ответ №1:

Источник ваших зависимостей является важной частью вашей сборки. Это один из многих элементов, которые помогают обеспечить воспроизводимые сборки. Maven предполагает, что данная версия зависимости одинакова во всех репозиториях. К сожалению, это не так.

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

И этот скрипт должен полагаться на allprojects блок, чтобы убедиться, что репозитории добавлены ко всем проектам сборки нескольких проектов.

Комментарии:

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

2. Я не уверен, что жестко запрограммированный репозиторий в репозитории кода также является хорошей идеей. Это может вызвать проблемы, когда репозитории недоступны или вообще исчезают (например, Codehaus). Возможность указать репозиторий внутри организации на самом деле также хороша для воспроизводимости: вы не так сильно зависите от внешних факторов, когда библиотека кэшируется. (Кроме того, Maven / Gradle, похоже, имеют тенденцию «пропускать» имена библиотек, которые вы пытаетесь загрузить, даже внутренние имена, что может быть проблемой.) По крайней мере, возможность переопределения с помощью локальной конфигурации была бы хорошей.