Создайте локальную копию удаленного репозитория Maven с помощью publishToMavenLocal

У меня есть удаленная зависимость в моем проекте Android, которую я хотел бы изменить (заменить одну из ее зависимостей более новой).

По сути, это означает, что я хотел бы отредактировать файл .pom этой библиотеки. У меня нет доступа к коду библиотеки.

У меня есть эта строка в моем build.gradle:

implementation 'com.acme:the-sdk:1.1.0@aar'

Похоже, что задача publishToMavenLocal была бы решением: она создала бы локальную копию the-sdk, включая файлы .pom и .aar. Затем я бы изменил файл .pom и добавил mavenLocal() как 1-й элемент в списке репозиториев.

Я не слишком знаком с Gradle.

Как я могу использовать publishToMavenLocal (или другой инструмент) для создания этой локальной копии библиотеки?

Разве не было бы проще добавить «более свежую» в ваш собственный проект, чтобы вы эффективно перезаписали зависимость вашей зависимости?

J Fabian Meier 03.08.2018 21:38

@JFMeier Вероятно, это был бы лучший вариант в более «стандартной» ситуации, но в моем случае зависимость acme использует «переупакованную» версию публичной библиотеки, которую я хочу переопределить. Поэтому добавление обновленной зависимости к моему build.gradle создает конфликты.

Sébastien 06.08.2018 11:11

Под "переупаковкой" вы имеете в виду, что они изменили groupId или artifactId?

J Fabian Meier 06.08.2018 11:16

Да, они изменили как groupId (с com.facebook.android на com.acme.partner), так и artifactId (с audience-network-sdk на facebook)

Sébastien 06.08.2018 11:22

В Maven я бы явно исключил зависимость «facebook» вашей зависимости и добавил бы «заменяющую» зависимость в ваш проект. Все это было бы возможно в pom вашего проекта без манипуляций с проектом acme. Я предполагаю, что Gradle предлагает вам аналогичные функции, но я недостаточно хорошо владею Gradle, чтобы сказать вам.

J Fabian Meier 06.08.2018 13:04

Вы правы, это действительно так просто! Спасибо, что указали мне правильное направление.

Sébastien 06.08.2018 13:15
0
6
230
1

Ответы 1

Как предложил JFMeier, мне не нужно изменять проект acme.

Мне нужно только сказать Gradle исключить зависимость (чтобы я сам мог включить ее в желаемую версию).

implementation ('com.acme.the-sdk:1.1.0@aar') {
    transitive = true
    exclude module: 'facebook'
}

implementation 'com.facebook.android:audience-network-sdk:4.99.1'

Другие вопросы по теме