Maven から Gradle への移行に取り組んでいます。残念ながら、対処しなければならないいくつかの 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 ファイル) を指定すると、次のエラーで失敗します。
toString() メソッドを使用してクラス org.gradle.api.internal.file.collections.FileTreeAdapter を File に変換することは非推奨となり、Gradle 2.0 で削除される予定です。代わりに、java.io.File、java.lang.String、java.net.URL、または java.net.URI を使用してください。
誰かがこれについて具体的に提案したり、war ファイルを「オーバーレイ」するためのより良い方法を持っている場合は、本当に感謝しています!