java - 无法将已编译的 java avro 文件导入 Scala 代码库
问题描述
我正在尝试在我的 scala 代码库中引用生成的 Avro 文件。我正在使用 commercehub avro gradle 插件生成 avro java 编译文件,并且它们在build/generated-main-avro-java/
这就是我的 gradle 文件的外观。问题是 java 文件生成正确,但我无法在我的 scala 代码中导入它们。知道我在这里可能做错了什么吗?
buildscript {
repositories {
gradlePluginPortal()
}
dependencies {
classpath "gradle.plugin.com.lightbend.akka.grpc:akka-grpc-gradle-plugin:0.7.2"
classpath 'com.google.protobuf:protobuf-gradle-plugin:0.8.8'
}
}
plugins {
id 'scala'
id 'application'
id "com.google.protobuf" version "0.8.8"
id 'com.github.johnrengelman.shadow' version '5.2.0'
id "com.commercehub.gradle.plugin.avro" version "0.9.1"
}
apply plugin: 'java'
apply plugin: 'com.lightbend.akka.grpc.gradle'
apply plugin: 'com.google.protobuf'
apply plugin: 'com.github.johnrengelman.shadow'
apply plugin: "com.commercehub.gradle.plugin.avro"
akkaGrpc {
language = "Scala"
generateClient = true
generateServer = true
}
mainClassName = 'com.test.App'
repositories {
mavenLocal()
mavenCentral()
google()
}
tasks.withType(ScalaCompile) {
ScalaCompileOptions.metaClass.daemonServer = true
ScalaCompileOptions.metaClass.fork = true
ScalaCompileOptions.metaClass.useAnt = false
ScalaCompileOptions.metaClass.useCompileDaemon = false
}
def scalaVersion = "2.12"
ext.elasticAPMVersion = "1.14.0"
// Define a separate configuration for managing the dependency on Jetty ALPN agent.
configurations {
alpnagent
}
dependencies {
...
...
...
...
...
implementation "org.apache.avro:avro:1.9.2"
}
test {
jvmArgs "-javaagent:" + configurations.alpnagent.asPath
maxParallelForks = 1
}
run {
mainClassName = mainClassName
standardInput = System.in
}
task runServer(type: JavaExec) {
classpath = sourceSets.main.runtimeClasspath
main = mainClassName
jvmArgs "-javaagent:" + configurations.alpnagent.asPath
}
shadowJar {
classifier = 'shadow'
mainClassName = mainClassName
archiveName = "${title}-${version}.jar"
append 'reference.conf'
destinationDir new File("./docker/bin")
zip64 true
}
解决方案
我想说,您需要将生成的源文件夹添加到源集和 scala 编译器源 - 如下所示:
compileScala {
source = ['src/main/scala', 'src/main/java', 'build/generated-main-avro-java/']
}
sourceSets {
main {
avro {
scala.srcDir file('build/generated-main-avro-java/')
}
}
}
推荐阅读
- amazon-web-services - AWS 上的 Canary 版本和蓝绿部署
- json - 使用 Vue 和 JSON 基于另一个选择填充选择选项
- powerbi - power bi dax中的日期比较
- ios - 如何处理场景中的备用视图
- parallel-processing - MPI 发送“无法被网络缓冲”
- javascript - 在 Internet Explorer 中,如何以编程方式更改“选择”元素的(显示)值?
- python - 使用预签名 URL 上传文件的 Python 脚本
- javascript - 遍历对象,然后将值传递给 axios 函数,在 react 组件中渲染结果
- android - Android - ListRowPresenter 选定项目的位置固定
- asp.net - Blazor WeatherForecast 示例如何工作?