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)
}
}