Перенаправление зависимости проекта Gradle от артефакта Maven в другой проект Gradle

Есть ли способ перенаправить зависимость проекта Gradle от координат артефакта Maven на выход другого проекта Gradle в той же сборке?

Я не вижу смысла в зависимости от таких вещей, как project(‘:xyz’), так как это требует этого проекта :xyz быть в моей файловой системе и встроенной, и чтобы ссылочный проект знал, что :xyz также в той же сборке. Для меня более логично иметь зависимости от координат артефакта Maven и использовать артефакты, созданные из проектов в той же сборке, которые задают совпадающие координаты, вместо загрузки артефакта из репозитория.

Если бы эта функциональность существовала, или если бы я сделал это сам, я бы вообразил, что она будет реализована как объект, который можно перечислить в repositories закрытие перед всеми другими репозиториями, такими как mavenCentral(),

2 ответа

Решение

То, что вы ищете, это композитные сборки. Это позволит вам определить, что сборка включает в себя другую сборку, и, таким образом, Gradle выяснит, что нотация зависимостей group:name:version заменяется включенной сборкой.

Однако я все равно рекомендую использовать project(:xyz) примечание, когда проекты принадлежат одному и тому же устройству, что обычно представляет собой единый контроль из системы контроля версий.

Вы можете опубликовать xyz в вашем локальном хранилище.

В проекте xyz, используйте этот плагин:

apply plugin: 'maven-publish'

И просто беги gradle publishToMavenLocal

Затем в проекте "root" дополнительно используйте локальный репозиторий и используйте xyz как регулярная зависимость:

repositories {
    mavenLocal()
}

dependencies {
    compile('your.company:xyz:1.0.0')
}
Другие вопросы по тегам