【问题标题】:How to use Launch4J with obfuscated jar in Gradle如何在 Gradle 中使用带有混淆 jar 的 Launch4J
【发布时间】:2019-04-29 06:24:09
【问题描述】:

我正在尝试使用我的混淆 jar 使用 Launch4J 创建一个可执行文件,但我遇到了问题。每次我通过 Gradle 运行 createEXE 任务时,shadowJar 任务也会运行,导致我的混淆 jar 被覆盖。

如何将我的混淆 jar 与 Launch4J 的 createExe 任务一起使用?否则在createExe执行期间如何阻止shadowJar运行?

这是我的 Launch4J 任务:

launch4j {
    jar = "${projectDir}/build/libs/plugin.jar"
    outfile = 'Plugin.exe'
    icon = "${projectDir}/etc/icon.ico"
    mainClassName = 'plugin.Driver'
    bundledJrePath = './jre'
    jreMinVersion = '1.8.0_161'
    jdkPreference = 'preferJdk'
}

【问题讨论】:

  • 所以你正在使用 shadowJar 但还有一个来自其他地方的混淆 jar?是什么产生的?
  • @ToYonos 我运行 shadowJar 来创建一个包含所有依赖项的 jar。然后我通过它的gui使用proguard混淆了那个jar。我稍后会将其集成到 Gradle 中。当我运行 createExe 任务时,它会重新运行 shadowJar,因此会覆盖并创建非混淆 jar 的可执行文件
  • 试试gradle -x shadowJar createExe
  • @ToYonos 它看起来有效:) 你想回复作为答案,以便我可以标记它吗?还有 -x 究竟做了什么?

标签: gradle proguard obfuscation launch4j shadowjar


【解决方案1】:

您应该使用-x 选项忽略shadowJar 任务。它告诉 Gradle 跳过指定的任务。

gradle -x shadowJar createExe

你也可以这样永久地做:

gradle.taskGraph.whenReady { taskGraph ->
    if (taskGraph.hasTask(createExe)) {
        shadowJar.enabled = false
    }
}

【讨论】:

    猜你喜欢
    • 2019-06-28
    • 2021-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-03
    • 1970-01-01
    • 1970-01-01
    • 2019-08-06
    相关资源
    最近更新 更多