Конфликт Pom.xml при интеграции модуля библиотеки в другой модуль проекта
Я реализую пользовательский модуль /SDK с закрытым исходным кодом (например, домофон), используя частное репо на моем собственном сервере в зависимости от maven, и у меня есть небольшая проблема в файле pom.xml
Описание проблемы : файл Pom.xml включает некоторые зависимости, которые я использовал в своем модуле, когда я интегрирую эту библиотеку /SDK в любой проект, почему-то у меня возникает конфликт между моими зависимостями и зависимостями проекта. Например: я использую эту зависимость в своем библиотечном модуле
implementation 'com.google.android.material:material:1.0.0'
и проект, с которым я пытаюсь интегрироваться, используя последнюю версию той же библиотеки
implementation 'com.google.android.material:material:1.2.0'
Итак, у меня ошибка времени компиляции. Я пытаюсь решить проблему с помощью<dependencyManagement>
tag, но мне в этом не повезло.
Кроме того, я не могу указать, каковы общие зависимости между моей библиотекой и проектом, который намеревался ее использовать.
Вопрос: как преодолеть конфликтную проблему. Я хочу, чтобы мой библиотечный модуль использовал версию этой зависимости 1.0.0, а другой проект без конфликтов использует версию 1.2.0.
Edit-1 Ниже приведен код, используемый в моей библиотеке для создания файла pom.xml:
publishing {
publications {
aar(MavenPublication) {
groupId libraryGroupId
version libraryVersion
artifactId libraryArtifactId
artifact androidJavadocsJar
artifact androidSourcesJar
artifact("$buildDir/outputs/aar/${artifactId}-release.aar")
pom.withXml {
def dependenciesNode = asNode().appendNode('dependencies')
for(int i = 1 ; i < configurations.implementation.allDependencies.size() ; i++){
def dependencyNode = dependenciesNode.appendNode('dependency')
dependencyNode.appendNode('groupId',
configurations.implementation.allDependencies[i].group)
dependencyNode.appendNode('artifactId',
configurations.implementation.allDependencies[i].name)
dependencyNode.appendNode('version',
configurations.implementation.allDependencies[i].version)
}
}
}
}
}
Edit-2 (прикрепленный файл pom.xml)
<dependencies>
<dependency>
<groupId>androidx.appcompat</groupId>
<artifactId>appcompat</artifactId>
<version>1.1.0</version>
</dependency>
<dependency>
<groupId>androidx.constraintlayout</groupId>
<artifactId>constraintlayout</artifactId>
<version>1.1.3</version>
</dependency>
<dependency>
<groupId>androidx.legacy</groupId>
<artifactId>legacy-support-v4</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>androidx.vectordrawable</groupId>
<artifactId>vectordrawable-animated</artifactId>
<version>1.1.0</version>
</dependency>
<dependency>
<groupId>com.google.android.material</groupId>
<artifactId>material</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>org.java-websocket</groupId>
<artifactId>Java-WebSocket</artifactId>
<version>1.5.1</version>
</dependency>
<dependency>
<groupId>com.google.android.exoplayer</groupId>
<artifactId>exoplayer</artifactId>
<version>2.11.5</version>
</dependency>
</dependencies>
1 ответ
Хорошо, я оставлю этот ответ здесь, потому что любой может столкнуться с той же проблемой. Я ничего не менял ни в файле pom.xml, ни в проекте, который интегрируется с библиотекой.
Я только что понял, что мне нужно изменить тему для чипа Google (который использует зависимость материала), как показано ниже:
<com.google.android.material.chip.Chip
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
style="@style/Widget.MaterialComponents.Chip.Action"
<!-- Add the below line -->
android:theme="@style/Theme.MaterialComponents.Light"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:textAppearance="?android:attr/textAppearance"
android:textColor="@color/colorChatAccent"
app:chipBackgroundColor="@android:color/white"
app:chipCornerRadius="@dimen/dimen_5"
app:chipStrokeColor="@color/colorChatAccent"
app:chipStrokeWidth="@dimen/dimen_1" />
Итак, проблема была не в pox.xml, а в теме Chip.