用proguard模糊java应用程序的gradle任务

wsewodh2  于 2021-07-06  发布在  Java
关注(0)|答案(1)|浏览(423)

我需要对一个java应用程序进行模糊处理,它依赖于许多外部jar。应用程序由许多模块组成,每个模块都包含api和实现jar。基本上,我需要创建一个gradle任务来混淆所有这些jar,这些jar可以在以后的jenkins构建过程中使用。有许多关于proguard的文档,但大部分都涉及android应用程序。
这里已经参考了官方的proguard文档:proguard gradle plugin

cnh2zyt3

cnh2zyt31#

我可以通过以下gradle配置来实现这一点
将所有依赖jar复制到一个目录

  1. def dependsDir = "${System.getProperty('user.dir')}/dependencies/"
  2. task copyDepends(type: Copy) {
  3. from configurations.compile
  4. into "${dependsDir}"
  5. }

创建类型为的渐变任务 proguard.gradle.ProGuardTask 。INJAR列表在目录中可用,并在gradle task中迭代名称。

  1. buildscript {
  2. repositories {
  3. mavenCentral()
  4. }
  5. dependencies {
  6. classpath 'net.sf.proguard:proguard-gradle:6.0.3'
  7. classpath 'net.sf.proguard:proguard-base:6.0.3'
  8. }
  9. }
  10. task proguard(type: proguard.gradle.ProGuardTask) {
  11. configuration 'proguard.conf'
  12. def inputDir = new File("${System.getProperty('user.dir')}/inputJars")
  13. def outputDir = "${System.getProperty('user.dir')}/inputJars"
  14. println ("List of jars for obfuscation : ")
  15. inputDir.eachFileRecurse (FileType.FILES) { file ->
  16. println(file.getName())
  17. injars file
  18. outjars "${outputDir}/${file.getName()}"
  19. }
  20. libraryjars "${System.getProperty('java.home')}/lib/rt.jar"
  21. libraryjars "${System.getProperty('java.home')}/lib/jce.jar"
  22. libraryjars "${System.getProperty('user.dir')}/dependencies/"
  23. }
展开查看全部

相关问题