gradle将类文件替换为修改MANIFEST

时间:2015-01-14 15:42:04

标签: jar gradle

是否可以将类文件替换为使用Gradle保持MANIFEST文件的jar? 我需要这样做才能从供应商处应用一个仅提供类文件的补丁。

我试过这个:

任务applayPatch(类型:Jar){

destinationDir = new File("${rootProject.projectDir}/libs/tool") 
archiveName = "myfile.jar"

from(zipTree("${rootProject.projectDir}/libs/myfile.jar")) { 
    exclude "com/tool/frontoffice/partymanager/partysearch/DynamicPartySearchWidget.class"
}

from ("${rootProject.projectDir}/point-release/FFO-33758/com/fineos/frontoffice/partymanager/partysearch") { 
    include "MyClass.class"


} 

}

但没有给我一个空的MANIFEST并且只有MyClass.class类的jar

1 个答案:

答案 0 :(得分:1)

尝试使用Zip类型的任务代替Jar,以避免让Gradle为您生成新的清单。

task patchedJar(type: Zip, dependsOn: jar) {
    extension 'jar'
    from(zipTree(jar.archivePath)) {
        exclude '**/MyClass.class'
    }
    from("patches/dir") {
        include 'com/foo/package/MyClass.class'
    }
}

请注意,默认情况下,这会将生成的jar放在build/distributions中。如果您想在其他地方输出输出,只需更改destinationDir属性即可。