我们正在从Maven迁移到Gradle。不幸的是,我们仍然需要处理一些War叠加包。
作为解决方法,我正在尝试将一个war文件的内容复制到另一个war文件中。
目前为止,我已经完成了以下工作:
当使用
作为解决方法,我正在尝试将一个war文件的内容复制到另一个war文件中。
目前为止,我已经完成了以下工作:
task overlayWars (dependsOn: war) << {
// Get the source war files to copy the contents from...
def dependencyWars = configurations.runtime.filter { it.name.endsWith ('.war') }
dependencyWars.each { dependentWar ->
// Get the products, ie the target war file...
war.outputs.files.each { product ->
println "Copying $dependentWar contents into $product"
copy {
from { zipTree (dependentWar) }
into { zipTree (product)} // this seems to be the problem
include 'WEB-INF/classes/**/*.class'
include 'WEB-INF/jsp/**/*.jsp'
}
}
}
}
当使用
into { zipTree (product)}
插入文件(如file ('tmp/whatever')
)时,这个操作可以正常运行。当指定另一个zip文件(目标war文件)时会出现以下错误:
如果有人对此有具体的建议或更好的方法来“覆盖”war文件,我将非常感激!Converting class org.gradle.api.internal.file.collections.FileTreeAdapter to File using toString() method has been deprecated and is scheduled to be removed in Gradle 2.0. Please use java.io.File, java.lang.String, java.net.URL, or java.net.URI instead.