Gradle sync not auto-resolve Android library project dependencies with @aar annotation
Gradle sync not auto-resolve Android library project dependencies with @aar annotation
我在此处创建了一个 Android 库项目:https://github.com/dbotha/Android-Photo-Picker
照片选择器库项目本身有几个它自己的依赖项:
// library build.gradle
dependencies {
compile 'com.android.support:appcompat-v7:22.2.1'
compile 'com.squareup.picasso:picasso:2.5.2'
}
我已经在 Maven Central 上提供了这个库项目,这样它就可以作为依赖项轻松添加到应用程序中:
// application build.gradle
dependencies {
compile 'ly.kite:photo-picker:1.1.2@aar'
}
问题是,当我将它作为依赖项添加到新的 Android 应用程序项目时,它崩溃了,因为它无法从库项目中找到 Picasso 依赖项:
Caused by: java.lang.ClassNotFoundException: Didn't find class "com.squareup.picasso.Picasso" on path
只有当我明确地将此依赖项添加到应用程序时 build.gradle 才能正常工作。
我的库 POM 文件 dependencies
看起来正确:https://repo1.maven.org/maven2/ly/kite/photo-picker/1.1.2/photo-picker-1.1.2.pom
所以我很好奇是否包含我的照片选择器库作为依赖项的应用程序也总是需要显式添加所有照片选择器库依赖项?
您正在使用 @aar
表示法。
这意味着您只想下载 aar 工件,而不需要依赖项。
你可以查看documentation:
这部分
检查 1.4.1.2. Artifact only notation
部分:
An artifact only notation creates a module dependency which downloads only the artifact file with the specified extension. Existing module descriptors are ignored.
使用@aar
表示法如果要下载依赖,需要加上transitive=true
.
我希望省略 @aar 它应该有效。
我在此处创建了一个 Android 库项目:https://github.com/dbotha/Android-Photo-Picker
照片选择器库项目本身有几个它自己的依赖项:
// library build.gradle
dependencies {
compile 'com.android.support:appcompat-v7:22.2.1'
compile 'com.squareup.picasso:picasso:2.5.2'
}
我已经在 Maven Central 上提供了这个库项目,这样它就可以作为依赖项轻松添加到应用程序中:
// application build.gradle
dependencies {
compile 'ly.kite:photo-picker:1.1.2@aar'
}
问题是,当我将它作为依赖项添加到新的 Android 应用程序项目时,它崩溃了,因为它无法从库项目中找到 Picasso 依赖项:
Caused by: java.lang.ClassNotFoundException: Didn't find class "com.squareup.picasso.Picasso" on path
只有当我明确地将此依赖项添加到应用程序时 build.gradle 才能正常工作。
我的库 POM 文件 dependencies
看起来正确:https://repo1.maven.org/maven2/ly/kite/photo-picker/1.1.2/photo-picker-1.1.2.pom
所以我很好奇是否包含我的照片选择器库作为依赖项的应用程序也总是需要显式添加所有照片选择器库依赖项?
您正在使用 @aar
表示法。
这意味着您只想下载 aar 工件,而不需要依赖项。
你可以查看documentation:
这部分
检查 1.4.1.2. Artifact only notation
部分:
An artifact only notation creates a module dependency which downloads only the artifact file with the specified extension. Existing module descriptors are ignored.
使用@aar
表示法如果要下载依赖,需要加上transitive=true
.
我希望省略 @aar 它应该有效。