使用gradle时遇到问题:
我有一个库项目,它有两个库模块(称为libA,libB), libA是我推送到本地Maven的项目,而libB是libA的依赖项之一:
apply plugin: 'com.android.application'
android {
compileSdkVersion 23
buildToolsVersion "23.0.1"
useLibrary 'org.apache.http.legacy'
defaultConfig {
applicationId "com.stratbeans.barium.mobilebarium"
minSdkVersion 16
targetSdkVersion 23
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.1.0'
compile 'com.android.support:design:23.1.0'
compile files('libs/universal-image-loader-1.9.3.jar')
compile files('libs/listviewanimations_lib-core-slh_3.1.0.jar')
compile project(':ListViewAnimations-core')
compile project(':StickyListHeaders')
compile project(':ListViewAnimations-core-slh')
上传到maven后,我在我的应用程序中使用libA作为依赖
compile project (':libB')
出于某种原因,我也在应用程序中使用libB的API,所以在我编译时,发生错误,它找不到libB。错误代码:
错误:配置项目':app'时出现问题。
无法解析配置':app:_coohuaOnlineTestReleaseCompile'的所有依赖项。 找不到CoohuaFramework:qrscanner:未指定。 在以下位置搜索: repo1.maven.org/maven2/CoohuaFramework/qrscanner/unspecified/qrscanner-unspecified.pom repo1.maven.org/maven2/CoohuaFramework/qrscanner/unspecified/qrscanner-unspecified.jar maven.coohua.com:8002/nexus/content/repositories/releases/CoohuaFramework/qrscanner/unspecified/qrscanner-unspecified.pom maven.coohua.com:8002/nexus/content/repositories/releases/CoohuaFramework/qrscanner/unspecified/qrscanner-unspecified.jar jcenter.bintray.com/CoohuaFramework/qrscanner/unspecified/qrscanner-unspecified.pom https://jcenter.bintray.com/CoohuaFramework/qrscanner/unspecified/qrscanner-unspecified.jar 文件:/Users/douhua/.m2/repository/CoohuaFramework/qrscanner/unspecified/qrscanner-unspecified.pom 文件:/Users/douhua/.m2/repository/CoohuaFramework/qrscanner/unspecified/qrscanner-unspecified.jar 文件:/Users/douhua/Library/Android/sdk/extras/android/m2repository/CoohuaFramework/qrscanner/unspecified/qrscanner-unspecified.pom 文件:/Users/douhua/Library/Android/sdk/extras/android/m2repository/CoohuaFramework/qrscanner/unspecified/qrscanner-unspecified.jar 文件:/Users/douhua/Library/Android/sdk/extras/google/m2repository/CoohuaFramework/qrscanner/unspecified/qrscanner-unspecified.pom 文件:/Users/douhua/Library/Android/sdk/extras/google/m2repository/CoohuaFramework/qrscanner/unspecified/qrscanner-unspecified.jar 要求: CooHuaClient:app:未指定> com.coohua.framework:CoohuaFramework:1.6.5
我不知道为什么,我也试过'transitive = true',但它没有帮助。
BUT: 当我将libB的所有代码移动到libA作为其中的一部分时。一切正常,我可以在应用程序中使用libB的代码。
有谁可以告诉我为什么会发生这种情况以及如何解决这个问题?
答案 0 :(得分:0)
不幸的是,您还必须将libB添加为依赖项,因为没有办法自动执行此操作。此外,您不应该将所有代码从libB复制到libA。我发现了困难的方式。
想象一下,创建两个新库libC和libD。 libC需要libA,libD也需要libA。现在如果你在libC和libD中包含libA的代码,你最终会得到很多双重代码。如果你有一个你想同时使用libC和libD的项目,你就会遇到麻烦,因为来自libA的代码变得模棱两可,它提供了两次。
所以,我的推荐,也推动了libB并将compile 'com.luis.lib:libB:1.0'
添加到你的build.gradle。
答案 1 :(得分:0)
您已将libA推送到Maven仓库。
因为你的LibA已经
了Option Explicit
Sub Button2_Click()
Dim i&, j&, n& 'as Long
Dim Ws As Worksheet
Set Ws = ActiveSheet
n = Ws.Cells(Ws.Rows.Count, "A").End(xlUp).Row
For i = 1 To n
Select Case .Cells(i, "A").Value2
Case "2015 Xor 2011": .Cells(i, 2).Value2 = "blue"
Case "2001 Xor 2003": .Cells(i, 2).Value2 = "green"
Case "2014 Xor 2006": .Cells(i, 2).Value2 = "red"
End Select
j = j + 1
Next i
End With
End Sub
pom文件中的,libA与libB有依赖关系。
你必须将libB推入Maven Repo
这将解决您的问题,因为当您的项目使用时:
compile project (':libB')
Gradle将解析读取pom文件的嵌套依赖项。
我不知道为什么,我也试过'transitive = true',但它没有帮助。
compile 'com.luis.lib:libA:1.0'
表示您要下载嵌套的依赖项。我不认为transitive = false会解决问题,因为你的pom文件中的问题具有未知的依赖性。
但是:当我将libB的所有代码移动到libA作为其中的一部分时。一切正常,我可以在应用程序中使用libB的代码。
它解析了因为这样你不会添加依赖,而是将代码嵌入libA中。