Дублирующая запись zip при создании замаскированного jar приложения с помощью proguard с gradle - PullRequest
0 голосов
/ 15 марта 2019

Само приложение Java не содержит сторонних библиотечных зависимостей. И если я удаляю задачу obfuscate и строку jar.finalizedBy(project.tasks.obfuscate), стандартный jar собирается и запускается.

Ошибка ..

* What went wrong:
Execution failed for task ':obfuscate'.
> java.io.IOException: Can't write [/Users/rob/git/repo/build/libs/tool.out.jar] (Can't read [/Users/rob/git/repo/build/libs/tool.jar] (Duplicate zip entry [com/example/cli/j.class == tool.jar:com/example/cli/HelperUtils$5.class]))

build.gradle ..

task obfuscate(type: proguard.gradle.ProGuardTask) {
    configuration 'proguard.txt'

  injars "build/libs/tool.jar"
  outjars "build/libs/tool.out.jar"
  libraryjars "${System.getProperty('java.home')}/lib/rt.jar"
}

jar {
    archiveName = "tool.jar"
    from sourceSets.main.output.classesDir
    include '**/cli/*.class'
    manifest {
        attributes 'Main-Class': 'com.example.cli.Tool'
    }
}
jar.finalizedBy(project.tasks.obfuscate)

proguard.txt ..

-keep public class com.example.cli.* {*;}

Приложение содержит 3 файла классов Java ..

com.example.cli.Tool (which contains the main)
com.example.cli.HelperUtils
com.example.cli.CustomEnums
...