是否可以将类文件替换为使用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
答案 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
属性即可。