MENU

使用 Gradle 合并编译后的 class 至指定 jar 文件中

2024 年 10 月 04 日 • 阅读: 56 • 开发日常

仅适用于产品没有开源的情况下作者允许反编译修改时使用。

壹; 配置文件

tasks.register('patchJar') {
    finalizedBy('mergePatch')
    doLast {
        def originFile = file('origin/原文件.jar')
        def tempDir = file("${buildDir}/tempJar")
        copy {
            from zipTree(originFile)
            into tempDir
        }
        copy {
            from 'build/classes/java/main', 'build/resources/main'
            into tempDir
            include '**/*.class', '**/*.yml'
        }
    }
}

tasks.register('mergePatch', Jar) {
    from file("${buildDir}/tempJar")
    archiveFileName = "${archivesBaseName}-${version}.jar"
    destinationDirectory = file("${buildDir}/libs")
    doLast {
        file("${buildDir}/tempJar").deleteDir()
    }
}

tasks.build.dependsOn(tasks.patchJar)