eclipseから.warファイルにエクスポートしてTomcatで実行できます。しかし、Bazelを使用してビルドすると、生成された.warファイルはTomcat上では実行されません。日食(と作業)からエクスポートBazel warファイルに無効な './'ディレクトリがあります
プロジェクト構造
project
|_src
| |_main/java/*.java
|
|_WebContent
|_META-INF
|_Manifest.mf
|_WEB-INF
|_lib/*.jar
|_web.xml
WARファイルは次のようになります。
inflated: META-INF/MANIFEST.MF
inflated: .DS_Store
created: META-INF/
created: WEB-INF/
created: WEB-INF/classes/
created: WEB-INF/classes/main/
created: WEB-INF/classes/main/java/
inflated: WEB-INF/classes/main/java/.DS_Store
inflated: WEB-INF/classes/main/java/foo.class
inflated: WEB-INF/classes/main/.DS_Store
inflated: WEB-INF/classes/.DS_Store
inflated: WEB-INF/.DS_Store
created: WEB-INF/lib/
inflated: WEB-INF/lib/.DS_Store
inflated: WEB-INF/lib/jersey-bundle-1.19.jar
inflated: WEB-INF/web.xml
私はBazelとの.warを作成すると、私はこれを取得:
created: ./
created: ./WEB-INF/
created: ./WEB-INF/classes/
created: ./WEB-INF/classes/main/
created: ./WEB-INF/classes/main/java/
inflated: ./WEB-INF/classes/main/java/.DS_Store
inflated: ./WEB-INF/classes/main/java/foo.class
created: ./WEB-INF/lib/
inflated: ./WEB-INF/lib/jersey-bundle-1.19.jar
inflated: ./WEB-INF/web.xml
私はwarファイルを取得するために.bzlファイルをカスタマイズしています以下のコード:
def _war_impl(ctxt):
zipper = ctxt.file._zipper
data_path = ctxt.attr.data_path
war = ctxt.outputs.war
build_output = war.path + ".WEB-INF"
print("build_output = %s" % (build_output))
cmd = [
"set -e;rm -rf " + build_output,
"mkdir -p %s" % build_output
]
inputs = ctxt.files.jars + [zipper]
cmd += ["mkdir -p %s/WEB-INF/lib" % build_output]
cmd += ["mkdir -p %s/WEB-INF/classes/main/java" % build_output]
、誰もがそれがwarファイルに「./」ディレクトリを作成しないように「ます。mkdir」を使用して構築する方法を指摘してもらえますか? $
def _make_war(zipper, input_dir, output):
return [
"(root=$(pwd);" +
("cd %s &&" % input_dir) +
("${root}/%s Cc ${root}/%s $(find .))" % (zipper.path, output.path))
]
(見つける: