【发布时间】:2018-01-22 14:57:15
【问题描述】:
我有 4 种不同的构建类型:
- 发布
- 开发
- 模拟
- 测试
当我想为我的项目创建 clean build 任务时,我看到 Gradle 正在使用单元测试进行干净的构建。
没关系,但是每个构建类型都在运行单元测试,干净的构建需要 4 倍的时间。
我怎样才能使clean build 只针对发布构建类型进行单元测试?
【问题讨论】:
我有 4 种不同的构建类型:
当我想为我的项目创建 clean build 任务时,我看到 Gradle 正在使用单元测试进行干净的构建。
没关系,但是每个构建类型都在运行单元测试,干净的构建需要 4 倍的时间。
我怎样才能使clean build 只针对发布构建类型进行单元测试?
【问题讨论】:
that 没有很好的任务可做。所以你必须自己写。
尝试在你的build.gradle旁边添加:
project.afterEvaluate {
// Grab all build types and product flavors
def buildTypes = android.buildTypes.collect { type -> type.name }
def productFlavors = android.productFlavors.collect { flavor -> flavor.name }
// When no product flavors defined, use empty
if (!productFlavors) {
productFlavors.add('')
}
productFlavors.each { productFlavorName ->
buildTypes.each { buildTypeName ->
def sourceName
if (!productFlavorName) {
sourceName = "${buildTypeName}"
} else {
sourceName = "${productFlavorName}${buildTypeName.capitalize()}"
}
def testTaskName = "test${sourceName.capitalize()}UnitTest"
def assembleTaskName = "assemble${sourceName.capitalize()}"
task "build${sourceName.capitalize()}"(dependsOn: ["$testTaskName", "$assembleTaskName"])
}
}
task 'buildRelease'(dependsOn: tasks.findAll { t -> t.name.startsWith('build') && t.name != 'build' && t.name != 'buildNeeded' })
}
【讨论】:
BUILD SUCCESSFUL