我有一个AndroidStudio项目,包含一个主模块“app”一个安卓库“baseapp”和另一个安卓库“网络” - 这取决于“baseapp”。我希望编译这两个库,并将它们的工件上传到maven存储库。 “app”是一个消费“baseapp”和“网络”的示例应用程序。
由于maven repo实际上是一个git repo,我使用wagon-git插件和this script描述here。
这是项目结构:
主要应用build.gradle
:
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile "com.android.support:appcompat-v7:$rootProject.supportLibraryVersion"
compile "com.locassa.android.baseapp:baseapp:$rootProject.artifactVersionName"
compile "com.locassa.android.baseapp:networking:$rootProject.artifactVersionName"
}
网络的build.gradle
:
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
compile "com.android.support:appcompat-v7:$rootProject.supportLibraryVersion"
testCompile 'junit:junit:4.12'
compile "com.squareup.retrofit2:retrofit:$rootProject.retrofitVersion"
compile "com.squareup.retrofit2:converter-gson:$rootProject.retrofitVersion"
compile "com.squareup.okhttp3:logging-interceptor:$rootProject.okhttpVersion"
compile "com.locassa.android.baseapp:baseapp:$rootProject.artifactVersionName"
}
当我启动./gradlew uploadArchives
命令时,由于“baseapp”尚未上传,因此编译“网络”工件时构建失败。我原本以为我可以编译并上传“baseapp”,并且只有在编译和上传“网络”之后才会发生,但这种情况并没有发生。我不确定这是因为“网络”是在“baseapp”之前编译的,还是因为gradle会在执行任何内容之前检查所有依赖项。
不幸的是,我对gradle的了解有限,我基于其他SO问题的所有尝试都没有完全解决。
有没有人知道为什么会发生这种情况或者在gradle中设置优先级的方法,以便即使“网络”具有不满意的依赖关系也可以上传“app”,或者可选择强制如何强制“app”上传忽略或禁用“网络”?
我希望这两个工件具有相同的版本,因为它更易于使用和维护,因此我无法使用“网络”来引用以前版本的“app”。
希望它很清楚,但除此之外,我很乐意与更多信息整合。
由于