如何在 Gradle 中使用带有混淆 jar 的 Launch4J

How to use Launch4J with obfuscated jar in Gradle

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

如何将混淆后的 jar 与 Launch4J 的 createExe 任务一起使用?否则如何在 createExe 执行期间从 运行ning 停止 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'
}

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

gradle -x shadowJar createExe

你也可以这样永久地做:

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