我正在构建一个库,并希望使用 Volley 来实现它的网络方面。我可以打包 Volley jar 并发布 .aar,将源代码复制到我的项目中并发布 .jar(废话),或者使用 Gradle 执行一些依赖项魔法。
无论哪种方式,我猜如果任何尝试使用我的库的应用程序也有 Volley 依赖项(通过 .jar 或 gradle),我都会发生冲突。
正确的做法是什么?
我宁愿不只是要求用户删除自己对 Volley 的依赖关系,以避免多个事物定义它的 dexException,因为这似乎是这些错误的最常见解决方案。
谢谢
最佳答案
如果您与传递依赖项发生冲突,您可以将其排除或不在项目中定义它并使用库项目中的依赖项。
Gradle
dependencies {
compile("org.gradle.test.excludes:api:1.0") {
exclude module: 'shared'
}
}
Maven
<dependencies>
<dependency>
<groupId>sample.ProjectA</groupId>
<artifactId>Project-A</artifactId>
<version>1.0</version>
<scope>compile</scope>
<exclusions>
<exclusion> <!-- declare the exclusion here -->
<groupId>sample.ProjectB</groupId>
<artifactId>Project-B</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
引用:
Gradle http://www.gradle.org/docs/current/userguide/dependency_management.html
Maven http://maven.apache.org/guides/introduction/introduction-to-optional-and-excludes-dependencies.html
关于java - 如何使一个android库项目依赖于另一个库而不发生冲突?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27913200/