我需要对一个java应用程序进行模糊处理,它依赖于许多外部jar。应用程序由许多模块组成,每个模块都包含api和实现jar。基本上,我需要创建一个gradle任务来混淆所有这些jar,这些jar可以在以后的jenkins构建过程中使用。有许多关于proguard的文档,但大部分都涉及android应用程序。这里已经参考了官方的proguard文档:proguard gradle plugin
cnh2zyt31#
我可以通过以下gradle配置来实现这一点将所有依赖jar复制到一个目录
def dependsDir = "${System.getProperty('user.dir')}/dependencies/" task copyDepends(type: Copy) { from configurations.compile into "${dependsDir}" }
创建类型为的渐变任务 proguard.gradle.ProGuardTask 。INJAR列表在目录中可用,并在gradle task中迭代名称。
proguard.gradle.ProGuardTask
buildscript { repositories { mavenCentral() } dependencies { classpath 'net.sf.proguard:proguard-gradle:6.0.3' classpath 'net.sf.proguard:proguard-base:6.0.3' } } task proguard(type: proguard.gradle.ProGuardTask) { configuration 'proguard.conf' def inputDir = new File("${System.getProperty('user.dir')}/inputJars") def outputDir = "${System.getProperty('user.dir')}/inputJars" println ("List of jars for obfuscation : ") inputDir.eachFileRecurse (FileType.FILES) { file -> println(file.getName()) injars file outjars "${outputDir}/${file.getName()}" } libraryjars "${System.getProperty('java.home')}/lib/rt.jar" libraryjars "${System.getProperty('java.home')}/lib/jce.jar" libraryjars "${System.getProperty('user.dir')}/dependencies/" }
1条答案
按热度按时间cnh2zyt31#
我可以通过以下gradle配置来实现这一点
将所有依赖jar复制到一个目录
创建类型为的渐变任务
proguard.gradle.ProGuardTask
。INJAR列表在目录中可用,并在gradle task中迭代名称。