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

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

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

cnh2zyt3

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中迭代名称。

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/"
 }

相关问题