gradle - 在 gradle kotlin dsl 中使用 Avro to java 插件
问题描述
我有一个使用 gradle kotlin dsl 构建的 java 项目。
现在我想像这样使用 gradle-avro-plugin https://github.com/davidmc24/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)
}
上面的代码在我运行时返回以下错误grade compileJava
-
> * What went wrong:
'JavaCompile' 类型的扩展不存在。当前注册的扩展类型:[ExtraPropertiesExtension, DefaultArtifactPublicationSet, SourceSetContainer, ReportingExtension, JavaPluginExtension, JavaInstallationRegistry, JavaToolchainService, DistributionContainer, JavaApplication, DefaultAvroExtension]
我该如何解决这个错误?
解决方案
我有类似的问题,对我有用的是:
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
推荐阅读
- c++ - 为什么不能使用 constexpr if (expression) ,即使表达式可以在编译时进行评估
- node.js - 错误:ENOENT:没有这样的文件或目录,打开 'C:\Users\Dylan\AppData\Roaming\npm\node_modules\n_\lodash-3.*.tgz'
- objective-c - 位置经理一直在工作,但在使用时不工作
- rest - 如何在 Telerik Reporting CORS REST 服务中启用 SSL
- unity3d - 如何在 X 时间内更改 circlecollider2d 的大小
- azure-devops - 创建个人访问 VSTS 令牌但看不到它
- python - 从 tf saved_model 预测时出现 ValueError
- powershell - OpenCSManager failed 1722,RPC服务器不可用
- java - JSP 编译错误:无法解析数组
- logic - 2输入双反相器只用一个非门