1

I have 4 different build types:

  • release
  • dev
  • mock
  • test

When I want to make clean build task for my project I see that Gradle is making a clean build with unit tests.

It is ok but unit tests are running with every build type, it takes 4 times longer for a clean build.

How can I make clean build with unit tests only for release build type?

LazerBanana
  • 6,865
  • 3
  • 28
  • 47
Master Disaster
  • 729
  • 4
  • 21

1 Answers1

0

There is no nice task to do that. So you have to write it yourself.

Try to add next to your 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' })
}
Eugen Martynov
  • 19,888
  • 10
  • 61
  • 114