首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >由未包含在编译过程中的genrule生成的Java文件

由未包含在编译过程中的genrule生成的Java文件
EN

Stack Overflow用户
提问于 2016-08-06 14:28:50
回答 1查看 400关注 0票数 1

我在降压gen_rule的使用上遇到了一个问题。

我有一个可执行的jar文件,叫做SqlDelightBin,它可以生成Java源文件,在gradle构建过程中,将有一个gradle任务来运行这个jar文件,并且生成的Java文件可以被正确编译。

但是当我用一个名为sqldelight_devDebug的gen_rule包装这个jar文件,并将它添加到我的android_ gen_rule的deps列表中时,虽然这个库运行正常,但是生成的Java文件在这个编译循环中没有被编译,所以生成的类无法找到,当我再次运行buck build命令时,它成功了。

我的gen_rule是:

代码语言:javascript
运行
复制
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',
)

它运行jar文件,jar文件将把src/*/sqldelight/中的SQL文件编译成/Users/piasy/src/OkBuck/app/build/okbuck/sqldelight目录中的Java文件,为了让BUCK认为这个生成规则成功,我们创建了带有SQL文件列表的$OUT文件。

我的android_library是:

代码语言:javascript
运行
复制
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',
    ],
)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-07 03:41:05

如果要使用sqldelight_devDebug目标生成的文件作为源,请将该目标名称添加到srcs,如下所示:

代码语言:javascript
运行
复制
android_library(
    name = 'src_devDebug',
    srcs = [
        ':sqldelight_devDebug',
    ] + glob([
        'src/main/java/**/*.java',
        'src/dev/java/**/*.java',
    ]),
    # other params
    deps = [
        # other deps
    ],
    visibility = [
        'PUBLIC',
    ],
)
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38801261

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档