我有一个有三种口味的测试应用程序:
dependencies {
devCompile project(':library')
qaCompile 'com.example:library:1.0.0-SNAPSHOT@aar'
rcCompile 'com.example:library:1.0.0@aar'
}
我运行Gradle,并期望它完成所需的最少工作量来构建我想要的东西:
./gradlew :test-app:connectedAndroidTestDevDebug
但是,构建失败了,因为它正在尝试解决所有构建版本的依赖关系,而不仅仅是我正在构建的版本。
失败:构建因异常而失败。
*出了什么问题:
配置项目':test-app'时出现问题。
无法解析配置的所有依赖项':test-app:_qaDebugCompile'。
找不到com.example:library1.0.0-SNAPSHOT。
Searched in the following locations: https://repo1.maven.org/maven2/com/example/library/1.0.0-SNAPSHOT/maven-metadata.xml https://repo1.maven.org/maven2/com/example/library/1.0.0-SNAPSHOT/library-1.0.0-SNAPSHOT.pom https://repo1.maven.org/maven2/com/example/library/1.0.0-SNAPSHOT/library-1.0.0-SNAPSHOT.aar http://oss.sonatype.org/content/repositories/snapshots/com/example/library/1.0.0-SNAPSHOT/maven-metadata.xml http://oss.sonatype.org/content/repositories/snapshots/com/example/library/1.0.0-SNAPSHOT/library-1.0.0-SNAPSHOT.pom http://oss.sonatype.org/content/repositories/snapshots/com/example/library/1.0.0-SNAPSHOT/library-1.0.0-SNAPSHOT.aar file:/opt/android-sdk-macosx/extras/android/m2repository/com/example/library/1.0.0-SNAPSHOT/maven-metadata.xml file:/opt/android-sdk-macosx/extras/android/m2repository/com/example/library/1.0.0-SNAPSHOT/library-1.0.0-SNAPSHOT.pom file:/opt/android-sdk-macosx/extras/android/m2repository/com/example/library/1.0.0-SNAPSHOT/library-1.0.0-SNAPSHOT.aar file:/opt/android-sdk-macosx/extras/google/m2repository/com/example/library/1.0.0-SNAPSHOT/maven-metadata.xml file:/opt/android-sdk-macosx/extras/google/m2repository/com/example/library/1.0.0-SNAPSHOT/library-1.0.0-SNAPSHOT.pom file:/opt/android-sdk-macosx/extras/google/m2repository/com/example/library/1.0.0-SNAPSHOT/library-1.0.0-SNAPSHOT.aar Required by: project-name:test-app:unspecified
qa
风味试图解决的SNAPSHOT尚不存在,这应该没问题,因为我不是试图建立qa
风格。如果存在SNAPSHOT构建,那么一切正常。
问题:
答案 0 :(得分:0)
如果您手动排除任务,我认为构建有效吗?
gradle connectedAndroidTestDevDebug -x _qaDebugCompile
看起来任务connectedAndroidTestDevDebug
依赖于任务_qaDebugCompile
,这会导致您的问题。我不知道您的任务是如何定义的,但您可以使用Gradle的内置任务gradle dependencies
和gradle dependencyInsight
来研究您的依赖项。也许这会给你一个正确方向的暗示:
gradle dependencyInsight --dependency com.example:library:1.0.0-SNAPSHOT
您可以在the gradle User's guide中了解有关任务依赖关系的更多信息。
答案 1 :(得分:0)
我最终通过检查任务列表来解决这个问题,如果有所需构建变量的任务,则添加依赖项。
dependencies {
gradle.startParameter.taskRequests.each { taskRequest ->
taskRequest.args.each { taskName ->
String flavorName = "qa";
if (taskName.toLowerCase().endsWith(flavorName+"debug") ||
taskName.toLowerCase().endsWith(flavorName+"release")) {
qaCompile 'com.example:my-library:1.0.0-SNAPSHOT@aar'
}
}
}
devCompile project(':localLibrary')
//qaCompile 'com.example:my-library:1.0.0-SNAPSHOT@aar' // What I used to do.
rcCompile 'com.example:my-library:1.0.0@aar'
}
请记住,任务列表不包含依赖的任务名称,因此,如果您没有调用包含构建样式名称的任务,则它将不起作用。这只是我工作的一部分。