Remove dependency on shadow jar
Bug: 211400706
Change-Id: I0212f9c4eb64296fde5e3f440e6d86ab4c04c05c
diff --git a/build.gradle b/build.gradle
index 48e01cd..bfd11a0 100644
--- a/build.gradle
+++ b/build.gradle
@@ -2,7 +2,6 @@
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
-import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar
import dx.DexMergerTask
import dx.DxTask
import net.ltgt.gradle.errorprone.CheckSeverity
@@ -21,9 +20,6 @@
gradlePluginPortal()
jcenter()
}
- dependencies {
- classpath 'com.github.jengelman.gradle.plugins:shadow:5.2.0'
- }
}
plugins {
@@ -253,6 +249,8 @@
examplesTestNGRunnerCompile group: 'org.testng', name: 'testng', version: testngVersion
testCompile sourceSets.examples.output
testCompile "junit:junit:$junitVersion"
+ testCompile "org.jetbrains.kotlin:kotlin-stdlib:$kotlinVersion"
+ testCompile "org.jetbrains.kotlin:kotlin-reflect:$kotlinVersion"
testCompile group: 'org.smali', name: 'smali', version: smaliVersion
testCompile files('third_party/jasmin/jasmin-2.4.jar')
testCompile files('third_party/jdwp-tests/apache-harmony-jdwp-tests-host.jar')
@@ -273,8 +271,6 @@
apiUsageSampleCompile "com.google.guava:guava:$guavaVersion"
kotlinR8TestResourcesCompileOnly "org.jetbrains.kotlin:kotlin-stdlib:$kotlinVersion"
errorprone("com.google.errorprone:error_prone_core:$errorproneVersion")
- testImplementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlinVersion"
- testImplementation "org.jetbrains.kotlin:kotlin-reflect:$kotlinVersion"
}
def r8LibPath = "$buildDir/libs/r8lib.jar"
@@ -734,47 +730,57 @@
}
}
-static mergeServiceFiles(ShadowJar task) {
- // Everything under META-INF is not included by default.
- // Should include before 'relocate' so that the service file path and its content
- // are properly relocated as well.
- task.mergeServiceFiles {
- include 'META-INF/services/*'
+def repackageDepFile(file) {
+ if (file.getName().endsWith('.jar')) {
+ return zipTree(file).matching {
+ exclude '**/module-info.class'
+ exclude 'META-INF/maven/**'
+ exclude 'META-INF/LICENSE.txt'
+ exclude 'META-INF/MANIFEST.MF'
+ }
+ } else {
+ return fileTree(file)
}
}
-task repackageDepsNew(type: ShadowJar) {
+task repackageDeps(type: Jar) {
dependsOn downloadCloudDeps
- configurations = [project.configurations.runtimeClasspath]
- mergeServiceFiles(it)
- exclude { it.getRelativePath().getPathString().endsWith("module-info.class") }
- exclude { it.getRelativePath().getPathString().startsWith("META-INF/maven/") }
- baseName 'deps_all'
+ dependsOn project.configurations.runtimeClasspath
+ project.configurations.runtimeClasspath.forEach {
+ from repackageDepFile(it)
+ }
+ archiveFileName = 'deps_all.jar'
}
-task repackageSourcesNew(type: ShadowJar) {
+task repackageTestDeps(type: Jar) {
+ dependsOn downloadCloudDeps
+ dependsOn project.configurations.testCompile
+ project.configurations.testCompile.forEach {
+ from repackageDepFile(it)
+ }
+ archiveFileName = 'test_deps_all.jar'
+}
+
+task repackageSources(type: Jar) {
// If this fails then remove all generated folders from
// build/classes/java/test that is not {com,dalvik}
from sourceSets.main.output
- mergeServiceFiles(it)
- baseName 'sources_main'
+ archiveFileName = 'sources_main.jar'
}
-task repackageSources11New(type: ShadowJar) {
+task repackageSources11(type: Jar) {
dependsOn compileMainWithJava11
from file(java11ClassFiles)
- mergeServiceFiles(it)
- baseName 'sources_main_11'
+ archiveFileName = 'sources_main_11.jar'
}
-def r8CreateTask(name, baseNameName, sources, includeSwissArmyKnife) {
- return tasks.create("r8Create${name}", ShadowJar) {
+def r8CreateTask(name, baseName, sources, includeSwissArmyKnife) {
+ return tasks.create("r8Create${name}", Jar) {
+ dependsOn sources
from consolidatedLicense.outputs.files
- from sources
+ from sources.collect { zipTree(it) }
exclude "$buildDir/classes/**"
- baseName baseNameName
- classifier = null
- version = null
+ archiveFileName = baseName
if (includeSwissArmyKnife) {
manifest {
attributes 'Main-Class': 'com.android.tools.r8.SwissArmyKnife'
@@ -823,26 +829,26 @@
}
task r8WithDeps {
- dependsOn repackageSourcesNew
- dependsOn repackageDepsNew
- inputs.files ([repackageSourcesNew.outputs, repackageDepsNew.outputs])
+ dependsOn repackageSources
+ dependsOn repackageDeps
+ inputs.files ([repackageSources.outputs, repackageDeps.outputs])
def r8Task = r8CreateTask(
'WithDeps',
- 'r8_with_deps',
- repackageSourcesNew.outputs.files + repackageDepsNew.outputs.files,
+ 'r8_with_deps.jar',
+ repackageSources.outputs.files + repackageDeps.outputs.files,
true)
dependsOn r8Task
outputs.files r8Task.outputs.files
}
task r8WithDeps11 {
- dependsOn repackageSources11New
- dependsOn repackageDepsNew
- inputs.files ([repackageSources11New.outputs, repackageDepsNew.outputs])
+ dependsOn repackageSources11
+ dependsOn repackageDeps
+ inputs.files ([repackageSources11.outputs, repackageDeps.outputs])
def r8Task = r8CreateTask(
'WithDeps11',
- 'r8_with_deps_11',
- repackageSources11New.outputs.files + repackageDepsNew.outputs.files,
+ 'r8_with_deps_11.jar',
+ repackageSources11.outputs.files + repackageDeps.outputs.files,
true)
dependsOn r8Task
outputs.files r8Task.outputs.files
@@ -863,12 +869,12 @@
}
task r8WithoutDeps {
- dependsOn repackageSourcesNew
- inputs.files repackageSourcesNew.outputs
+ dependsOn repackageSources
+ inputs.files repackageSources.outputs
def r8Task = r8CreateTask(
'WithoutDeps',
- 'r8_without_deps',
- repackageSourcesNew.outputs.files,
+ 'r8_without_deps.jar',
+ repackageSources.outputs.files,
true)
dependsOn r8Task
outputs.files r8Task.outputs.files
@@ -885,24 +891,24 @@
}
task r8NoManifestWithoutDeps {
- dependsOn repackageSourcesNew
- inputs.files repackageSourcesNew.outputs
+ dependsOn repackageSources
+ inputs.files repackageSources.outputs
def r8Task = r8CreateTask(
'NoManifestWithoutDeps',
- 'r8_no_manifest_without_deps',
- repackageSourcesNew.outputs.files,
+ 'r8_no_manifest_without_deps.jar',
+ repackageSources.outputs.files,
false)
dependsOn r8Task
outputs.files r8Task.outputs.files
}
task r8NoManifestWithDeps {
- dependsOn repackageSourcesNew
- inputs.files ([repackageSourcesNew.outputs, repackageDepsNew.outputs])
+ dependsOn repackageSources
+ inputs.files ([repackageSources.outputs, repackageDeps.outputs])
def r8Task = r8CreateTask(
'NoManifestWithDeps',
- 'r8_no_manifest_with_deps',
- repackageSourcesNew.outputs.files + repackageDepsNew.outputs.files,
+ 'r8_no_manifest_with_deps.jar',
+ repackageSources.outputs.files + repackageDeps.outputs.files,
false)
dependsOn r8Task
outputs.files r8Task.outputs.files
@@ -925,10 +931,10 @@
outputs.file "${buildDir}/libs/r8_no_manifest.jar"
}
-task D8(type: ShadowJar) {
+task D8(type: Jar) {
dependsOn r8
from r8.outputs.files[0]
- baseName 'd8'
+ archiveFileName = 'd8.jar'
manifest {
attributes 'Main-Class': 'com.android.tools.r8.D8'
}
@@ -991,8 +997,8 @@
destinationDir file('build/libs')
}
-task testJarSources(type: ShadowJar, dependsOn: [testClasses, buildLibraryDesugarConversions]) {
- baseName = "r8testsbase"
+task testJarSources(type: Jar, dependsOn: [testClasses, buildLibraryDesugarConversions]) {
+ archiveFileName = "r8testsbase.jar"
from sourceSets.test.output
// We only want to include tests that use R8 when generating keep rules for applymapping.
include "com/android/tools/r8/**"
@@ -1074,9 +1080,9 @@
r8NoManifestWithoutDeps,
r8LibExludeDepsPath,
"--release",
- repackageDepsNew.outputs.files
- ).dependsOn(repackageDepsNew)
- inputs.files ([r8NoManifestWithoutDeps.outputs, repackageDepsNew.outputs])
+ repackageDeps.outputs.files
+ ).dependsOn(repackageDeps)
+ inputs.files ([r8NoManifestWithoutDeps.outputs, repackageDeps.outputs])
outputs.file r8LibExludeDepsPath
}
@@ -1111,7 +1117,7 @@
R8LibNoDeps,
r8RetraceExludeDepsPath,
"--release",
- repackageDepsNew.outputs.files
+ repackageDeps.outputs.files
).dependsOn(R8LibNoDeps)
outputs.file r8RetraceExludeDepsPath
}
@@ -1123,7 +1129,7 @@
task jctfCommonJar(type: Jar) {
from sourceSets.jctfCommon.output
- baseName 'jctfCommon'
+ archiveFileName = 'jctfCommon.jar'
}
artifacts {
@@ -1157,13 +1163,13 @@
task buildCfSegments(type: Jar, dependsOn: downloadDeps) {
from sourceSets.cfSegments.output
- baseName 'cf_segments'
+ archiveFileName = 'cf_segments.jar'
destinationDir file('build/libs')
}
task buildR8ApiUsageSample(type: Jar) {
from sourceSets.apiUsageSample.output
- baseName 'r8_api_usage_sample'
+ archiveFileName = 'r8_api_usage_sample.jar'
destinationDir file('tests')
}
@@ -1788,7 +1794,7 @@
}
task buildPreNJdwpTestsJar(type: Jar) {
- baseName = 'jdwp-tests-preN'
+ archiveFileName = 'jdwp-tests-preN.jar'
from zipTree('third_party/jdwp-tests/apache-harmony-jdwp-tests-host.jar')
// Exclude the classes containing java8
exclude 'org/apache/harmony/jpda/tests/jdwp/InterfaceType/*.class'