Конфликт 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.

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