minimize all jars using proguard

This commit is contained in:
Anton Keks 2018-12-24 16:57:25 +02:00
parent 7fd6aaf5b1
commit 3889e27cb9

View File

@ -50,29 +50,6 @@ configurations {
compileJava.options.annotationProcessorGeneratedSourcesDirectory = new File('build/generated')
task minimize(type: proguard.gradle.ProGuardTask, dependsOn: 'linux64') {
injars "build/libs/ipscan-linux64-${version}.jar"
outjars "build/libs/ipscan-linux64-${version}.min.jar"
libraryjars '/usr/lib/jvm/java-8-oracle/jre/lib/rt.jar' //System.getProperty('java.home') + "/lib/rt.jar"
libraryjars 'lib/jna-win32.jar'
dontobfuscate
dontoptimize
dontnote '**'
configuration 'lib/swt.pro'
def keepClasses = [
'net.azib.ipscan.**',
'org.savarese.rocksaw.**',
]
for (keepClass in keepClasses) {
keep access: 'public', name: keepClass, {
method access: 'public'
method access: 'private'
}
}
}
def packageTask(def platform, def moreJars, def moreLibs, Closure doMore) {
return tasks.create(platform, Jar) {
dependsOn = ['classes']
@ -85,14 +62,14 @@ def packageTask(def platform, def moreJars, def moreLibs, Closure doMore) {
'Version': version,
'Build-Date': java.time.LocalDate.now().toString(),
'URL': 'https://angryip.org/'
}
baseName = project.name + '-' + platform
from {
}
baseName = project.name + '-' + platform
from {
(configurations.compile + files("lib/swt-${platform}.jar") + files(moreJars))
.collect { it.isDirectory() ? it : zipTree(it) } +
moreLibs
}
exclude(
}
exclude(
'version.txt',
'images/**/*.svg',
'chrome.manifest',
@ -116,9 +93,41 @@ def packageTask(def platform, def moreJars, def moreLibs, Closure doMore) {
// Mac stuff
'libswt-awt-*.jnilib',
'libswt-xulrunner-*.jnilib'
)
with jar
doLast(doMore)
)
with jar
finalizedBy minimizeTask(platform, doMore)
}
}
def minimizeTask(def platform, Closure doMore) {
return tasks.create("${platform}.min", proguard.gradle.ProGuardTask) {
injars "build/libs/ipscan-${platform}-${version}.jar"
outjars "build/libs/ipscan-${platform}-${version}.min.jar"
libraryjars System.getProperty('java.home') + "/jre/lib/rt.jar" // "jmods/java.base.jmod" after Java 9
libraryjars '/usr/lib/jvm/java-8-oracle/jre/lib/rt.jar' // try Ubuntu version of Java 8 if current Java doesn't have rt.jar
libraryjars 'lib/jna-win32.jar'
dontobfuscate
dontoptimize
dontnote '**'
configuration 'lib/swt.pro'
def keepClasses = [
'net.azib.ipscan.**',
'org.savarese.rocksaw.**',
]
for (keepClass in keepClasses) {
keep access: 'public', name: keepClass, {
method access: 'public'
method access: 'private'
}
}
doLast {
ant.move(file: "build/libs/ipscan-${platform}-${version}.min.jar", tofile: "build/libs/ipscan-${platform}-${version}.jar")
doMore()
}
}
}