@@ -33,18 +33,31 @@ import org.gradle.api.Plugin
33
33
import org.gradle.api.Project
34
34
import org.gradle.api.artifacts.Configuration
35
35
import org.gradle.api.logging.Logger
36
+ import org.gradle.api.provider.Property
37
+ import org.gradle.api.provider.Provider
36
38
import org.gradle.kotlin.dsl.apply
39
+ import org.gradle.kotlin.dsl.create
40
+
41
+ abstract class VendorExtension {
42
+ /* * Controls dead code elimination, enabled if true. */
43
+ abstract val optimize: Property <Boolean >
44
+
45
+ init {
46
+ optimize.convention(true )
47
+ }
48
+ }
37
49
38
50
class VendorPlugin : Plugin <Project > {
39
51
override fun apply (project : Project ) {
52
+ val vendorConfig = project.extensions.create<VendorExtension >(" vendor" )
40
53
project.plugins.all {
41
54
when (this ) {
42
- is LibraryPlugin -> configureAndroid(project)
55
+ is LibraryPlugin -> configureAndroid(project, vendorConfig )
43
56
}
44
57
}
45
58
}
46
59
47
- fun configureAndroid (project : Project ) {
60
+ fun configureAndroid (project : Project , vendorConfig : VendorExtension ) {
48
61
project.apply (plugin = " LicenseResolverPlugin" )
49
62
50
63
val vendor = project.configurations.create(" vendor" )
@@ -71,7 +84,8 @@ class VendorPlugin : Plugin<Project> {
71
84
},
72
85
jarJarProvider = { jarJar.resolve() },
73
86
project = project,
74
- logger = project.logger
87
+ logger = project.logger,
88
+ optimize = vendorConfig.optimize
75
89
),
76
90
logger = project.logger
77
91
)
@@ -92,7 +106,8 @@ class JarJarTransformer(
92
106
private val parentPackageProvider : () -> String ,
93
107
private val jarJarProvider : () -> Collection <File >,
94
108
private val project : Project ,
95
- private val logger : Logger
109
+ private val logger : Logger ,
110
+ private val optimize : Provider <Boolean >
96
111
) : JarTransformer {
97
112
override fun transform (
98
113
inputJar : File ,
@@ -103,8 +118,10 @@ class JarJarTransformer(
103
118
val parentPackage = parentPackageProvider()
104
119
val rulesFile = File .createTempFile(parentPackage, " .jarjar" )
105
120
rulesFile.printWriter().use {
106
- for (packageName in ownPackages) {
107
- it.println (" keep $packageName .**" )
121
+ if (optimize.get()) {
122
+ for (packageName in ownPackages) {
123
+ it.println (" keep $packageName .**" )
124
+ }
108
125
}
109
126
for (externalPackageName in packagesToVendor) {
110
127
it.println (" rule $externalPackageName .** $parentPackage .@0" )
0 commit comments