static def setUpFatArtifactWithProguard()

in buildSrc/src/main/groovy/com/intellij/rt/coverage/build/ArtifactBuilder.groovy [105:136]


  static def setUpFatArtifactWithProguard(Project project, String artifactName,
                                          List<String> additionalModules = [],
                                          Closure<ProGuardTask> configureFilters = null,
                                          Closure<Jar> configureJar = null) {
    def proguardEnabled = project.rootProject.hasProperty("coverage.proguard.enable") ? "true" == project.rootProject["coverage.proguard.enable"] : true
    if (!proguardEnabled) {
      setUpArtifactInternal(project, artifactName, additionalModules, configureJar, "releaseJar", true, true)
      return
    }
    def fullName = "full-$artifactName"
    def compressedName = "compressed-$artifactName"
    def fullJarTaskName = "fullJar"
    setUpArtifactInternal(project, fullName, additionalModules, configureJar, fullJarTaskName, true, false)

    def fullJarTask = (Jar) project.tasks.named(fullJarTaskName).get()
    setUpProguard(project, fullJarTask, fullName, compressedName, configureFilters)
    def originalJar = project.tasks.named("jar", Jar).get()
    project.tasks.register("releaseJar", Jar) {
      // force to build release jar when jar is needed
      originalJar.finalizedBy(it)
      dependsOn("proguard")
      archiveBaseName.set(artifactName)
      destinationDirectory.set(new File(project.rootDir, "dist"))
      // do not copy original class files
      mainSpec.sourcePaths.clear()
      def compressedJar = fullJarTask.archiveFile.get().asFile.absolutePath.replace(fullName, compressedName)
      from(project.zipTree(compressedJar)) {
        exclude("classpath.index")
      }
      if (configureJar != null) configureJar(it)
    }
  }