为了简化,我将调用库,我使用library_a。Aar和library_b.aar.
这是我面临的情况。Library_a被构建并推送到maven_repository,这里没有问题。Library_b依赖于library_a,并按如下方式添加到Library_b:
repositories {
maven {
credentials {
username USERNAME
password PASSWORD
}
url "https://api.bitbucket.org/1.0/repositories/COMPANY/maven_repository/raw/releases"
}
}
dependencies {
...
compile 'package:library_a:1.0'
...
}
library_b没有错误地构建并上传到maven_repository。
现在我的应用程序依赖于library_b,我需要通过提供(如上所述)存储库和凭据来添加它。
我面临的第一个问题是,为了在我的项目中编译library_b,它需要以以下方式编译:
dependencies {
...
compile 'package:library_b:1.0@aar'
...
}
我必须添加@aar,否则gradle将无法识别它,但我不需要对library_a这样做。
第二个问题是,当我构建应用程序时,我得到警告,它无法找到对library_a中可用类的引用。我在这里漏掉了什么?我试着给library_a添加transitive=true
dependencies {
...
compile ('package:library_a:1.0') {
transitive = true;
}
...
}
但绝对没有效果。我检查了pom文件,它包含了适当的依赖项。可能是我所做的是gradle不支持,我必须在我的应用程序中编译library_a和library_b ?
听起来你的maven repo只包含aar
文件,而没有或错误的pom
文件。
您是否使用以下gradle插件和uploadArchives
gradle任务,以便将aar
s上传到您的maven存储库?https://github.com/dcendents/android-maven-gradle-plugin
为您的aar
s尝试这个gradle片段:
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.github.dcendents:android-maven-gradle-plugin:1.5'
}
}
apply plugin: 'com.android.library'
apply plugin: 'com.github.dcendents.android-maven'
android { ... }
dependencies { ... }
uploadArchives {
repositories {
mavenDeployer {
repository(url: "https://api.bitbucket.org/1.0/repositories/COMPANY/maven_repository/raw/releases") {
authentication(userName: USERNAME, password: PASSWORD)
}
}
}
}
然后使用uploadArchives
gradle任务