2017-09-01 4 views
0

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)) 
     ] 

(見つける:

答えて

0

はしてファイルをzip化するために使用しています(私はのAppEngineのbazelルールと同様のルール.bzlカスタムを作成した)問題がBazelは、ファイルコマンドにあったが判明します。 )がWEB-INFを返していたので、$(WEB-INFを見つける)に変更すると、 './'ディレクトリのない.warファイルが返され、Tomcatで実行されました。

関連する問題