2016-08-06 5 views
1

buck gen_ruleの使用に問題があります。コンパイル手順に含まれていないgenruleによって生成されたJavaファイル

SqlDelightBinという実行可能なjarファイルがあります。これは、gradleビルドプロセス中にJavaソースファイルを生成する可能性があります。このjarファイルを実行するためのgradleタスクがあり、生成されたJavaファイルを適切にコンパイルできます。

しかし、このgen_ruleを適切に実行するが、生成されたJavaファイルはこのコンパイルラウンドでコンパイルされないため、このjarファイルをsqldelight_devDebugという名前のwrapperでラップしてandroid_libraryのdepsリストに追加すると、が見つかりませんでした。バックビルドコマンドを再度実行すると、成功します。

マイgen_ruleは次のとおりです。

genrule(
    name = 'sqldelight_devDebug', 
    srcs = glob([ 
     'src/*/sqldelight/**/*.sq', 
    ]), 
    out = 'out', 
    bash = 'java -jar /Users/piasy/src/OkBuck/.okbuck/cache/c61171f7a8bee5d459102d49daecb0b6/SqlDelightBin-0.4.3.jar $SRCDIR /Users/piasy/src/OkBuck/app/build/okbuck/sqldelight && echo $SRCS > $OUT', 
) 

それは/Users/piasy/src/OkBuck/app/build/okbuck/sqldelightディレクトリにJavaファイルにsrc/*/sqldelight/でSQLファイルをコンパイルし、BUCKこのgenruleが成功すると思わせるためにjarファイルを、実行して、我々はと$OUTファイルを作成しますSQLファイルリスト。

私android_libraryです:あなたがソースとしてsqldelight_devDebugターゲットによって生成されたファイルを使用したい場合は、このように、srcsにそのターゲット名を追加

android_library(
    name = 'src_devDebug', 
    srcs = glob([ 
     'src/main/java/**/*.java', 
     'build/okbuck/sqldelight/**/*.java’, # the generated Java files 
     'src/dev/java/**/*.java', 
    ]), 
    # other params 
    deps = [ 
     # other deps 
     ':sqldelight_devDebug', 
    ], 
    visibility = [ 
     'PUBLIC', 
    ], 
) 

答えて

3

android_library(
    name = 'src_devDebug', 
    srcs = [ 
     ':sqldelight_devDebug', 
    ] + glob([ 
     'src/main/java/**/*.java', 
     'src/dev/java/**/*.java', 
    ]), 
    # other params 
    deps = [ 
     # other deps 
    ], 
    visibility = [ 
     'PUBLIC', 
    ], 
) 
+1

ない一部としてしかし、 "グロブ"の。私はそれが拾われないと確信しています。 'glob'の結果に追加したいでしょう。 – sdwilsh

+0

'srcs = [':sqldelight_devDebug'] + glob(['src/main/java/**/*。java'、 'src/dev/java/**/*。java'])、'私のgenruleのbashを 'bash = 'java -jar /Users/piasy/src/OkBuck/.okbuck/cache/c61171f7a8bee5d459102d49daecb0b6/SqlDelightBin-0.4.3.jar $ SRCDIR/Users/piasy/src/OkBuck/app/buildに変更します。/okbuck/sqldelight> $ OUT '、 '、生成されたJavaファイルリストを' $ OUT'に出力します。 'buck build'を実行すると、' __src_devDebug__srcs'ファイルは '$ OUT'ファイルパスの1行を持ちます。生成されたクラスが見つからない場合でもコンパイルは失敗します。新しく追加された行は '@ $ OUT'なので再帰的に見ることができますか? – Piasy

+0

しかし、私はこれを起こす方法を知らない、あなたの助けをありがとう! @sdwilsh – Piasy

関連する問題