本地 aar 库的传递依赖
Transitive dependencies for local aar library
我们正在制作一些库,主要是为了我们的 API,我们将使我们的外部开发人员的生活更轻松。
所以我们创建了新的库项目,并将 Retrofit 和其他一些库作为依赖项。
dependencies {
compile 'com.android.support:appcompat-v7:23.3.0'
compile 'com.google.code.gson:gson:2.6.2'
compile 'com.squareup.retrofit2:retrofit:2.0.1'
compile 'com.squareup.retrofit2:converter-gson:2.0.1'
compile 'com.squareup.okhttp3:okhttp:3.2.0'
}
现在当我们构建它时,它会生成 aar
文件。
但是现在当我们将aar
文件放到libs
目录下并设置为依赖时,我们仍然需要在用户的build.gradle
文件中放置相同的依赖,这很糟糕。应该是从图书馆借的吧?
repositories {
flatDir {
dirs 'libs'
}
}
dependencies {
compile(name: 'ourlibrary', ext: 'aar') {
transitive = true;
}
}
如何使 transitive = true
工作?
aar 文件 不包含嵌套(或 transitive)依赖关系 并且没有 pom描述库使用的依赖项的文件。
这意味着,如果您使用 flatDir
存储库导入 aar 文件,您还必须在项目中指定依赖项。
在您的情况下,由于上述原因,添加 transitive=true
并不能解决您的问题。
您应该使用 maven 存储库(您必须在私有或 publicmaven 存储库中发布该库),您不会遇到同样的问题。
在这种情况下,gradle 使用包含依赖项列表的 pom 文件下载依赖项。
我们正在制作一些库,主要是为了我们的 API,我们将使我们的外部开发人员的生活更轻松。
所以我们创建了新的库项目,并将 Retrofit 和其他一些库作为依赖项。
dependencies {
compile 'com.android.support:appcompat-v7:23.3.0'
compile 'com.google.code.gson:gson:2.6.2'
compile 'com.squareup.retrofit2:retrofit:2.0.1'
compile 'com.squareup.retrofit2:converter-gson:2.0.1'
compile 'com.squareup.okhttp3:okhttp:3.2.0'
}
现在当我们构建它时,它会生成 aar
文件。
但是现在当我们将aar
文件放到libs
目录下并设置为依赖时,我们仍然需要在用户的build.gradle
文件中放置相同的依赖,这很糟糕。应该是从图书馆借的吧?
repositories {
flatDir {
dirs 'libs'
}
}
dependencies {
compile(name: 'ourlibrary', ext: 'aar') {
transitive = true;
}
}
如何使 transitive = true
工作?
aar 文件 不包含嵌套(或 transitive)依赖关系 并且没有 pom描述库使用的依赖项的文件。
这意味着,如果您使用 flatDir
存储库导入 aar 文件,您还必须在项目中指定依赖项。
在您的情况下,由于上述原因,添加 transitive=true
并不能解决您的问题。
您应该使用 maven 存储库(您必须在私有或 publicmaven 存储库中发布该库),您不会遇到同样的问题。
在这种情况下,gradle 使用包含依赖项列表的 pom 文件下载依赖项。