当前位置: 首页 > 知识库问答 >
问题:

在gradle kotlin dsl中使用Avro转java插件

于鹏
2023-03-14

我有一个使用gradle kotlin dsl构建的java项目。

现在我想像这样使用gradle-avro-plugin https://github . com/davidmc 24/gradle-avro-plugin # alternate-usage

在 kotlin dsl 中,我编写了与下面相同的逻辑 -

    plugins {
        java
        id( "com.github.davidmc24.gradle.plugin.avro") version "1.0.0"
    }

    dependencies {
    implementation ("org.apache.avro", "avro", "1.10.1")
    }

    val generateAvro = tasks.register<com.github.davidmc24.gradle.plugin.avro.GenerateAvroJavaTask>("generateAvro") {
    source("src/avro")
    this.setOutputDir(file("dest/avro"))
    }

    configure<org.gradle.api.tasks.compile.JavaCompile> {
       this.source = fileTree(generateAvro)
    }

当我运行< code>grade compileJava时,上面的代码返回以下错误-

   > * What went wrong:

类型“JavaCompile”的扩展不存在。当前注册的扩展类型:[ExtraPropertiesExtension, DefaultArtifactPublicationSet, SourceSetContainer, ReportingExtension, JavaPluginExtension, JavaInstallationRegistry, JavaToolchainService, DistributionContainer, JavaApplication, DefaultAvroExtension]

我如何修复这个错误?

共有1个答案

谯德元
2023-03-14

我有类似的问题,对我有用的是:

    plugins {
        id("com.github.davidmc24.gradle.plugin.avro") version "1.2.0"
    }

    dependencies {
        implementation("org.apache.avro:avro:1.10.1")
    }

    tasks.withType<com.github.davidmc24.gradle.plugin.avro.GenerateAvroJavaTask> {
            setOutputDir(file("src/dest/dir/"))
    }

重要的是,我没有注册新任务,只是为每个任务指定了一个新的目标目录,类型为GenerateAvroJavaTask

 类似资料:
  • 根据Avro文档中“default”属性的定义:“此字段的默认值,用于读取缺少此字段的实例(可选)。” 这意味着,如果缺少相应的字段,则采用默认值。 但事实似乎并非如此。考虑下面的<代码>学生<代码>模式: 模式表示:如果“年龄”字段丢失,则将值视为-1。“名称”字段也是如此。 现在,如果我尝试从以下JSON构建学生模型: 我得到一个例外: 看起来默认设置未按预期工作。那么,违约的作用到底是什么呢

  • 我正在从Cloudera包裹中运行带有Spark 0.9.0的CDH 4.4。 我有一堆Avro文件是通过Pig的AvroStorage UDF创建的。我想在 Spark 中加载这些文件,使用通用记录或载入 Avro 文件的架构。到目前为止,我已经尝试过这个: 这适用于一个文件,但它不能扩展——我将所有数据加载到本地RAM中,然后从那里跨spark节点分发。

  • 问题内容: 一些JQuery插件不仅会向DOM节点添加行为,还会对其进行更改。例如,引导开关转向 变成像 与 哪个与React不兼容: 是否有推荐的技术将这些插件合并到React组件中?还是他们从根本上打破了React的假设并且无法使用它? 问题答案: 不,React会对在React之外修改自己的组件dom结构的任何事物产生严重的反应(haha)。这是您永远不想做的事情。推荐的解决方案是在reac

  • 要使用 Java 插件, 需要在构建脚本中加入如下内容 例子 22.1.使用 Java 插件 bulid.gradle apply plugin: 'java'

  • 问题内容: 我有对象的arraylist,并尝试将列表插入HANA。所以我的插入代码看起来像 } 这里 返回一个整数数组。 但这无法正常工作。根据我的程序每次都会调用ARRAY函数,但是为什么不将其插入HANA数据库中呢,所以过了一会儿我才知道我必须将JAVA Array转换为HANA Array。如何转换Java Array到HANA阵列。任何帮助表示赞赏。 问题答案: @RKR好的,这里有您的

  • jsTree的某些功能已移出核心,因此您只能在需要时使用它。要启用插件,请使用 plugins 配置选项 ,并将该插件的名称添加到数组中。 例如,启用所有插件可以通过以下方式完成: (仅启用您需要的插件) "plugins" : [ "checkbox", "contextmenu", "dnd", "massload", "search", "sort", "stat