有一句话:
-webkit-
import io.confluent.examples.streams.avro.WikiFeed
而不是resource
文件夹?另一个导入更加精彩:
java
import io.confluent.kafka.serializers.AbstractKafkaAvroSerDeConfig;
文件夹中没有kafka
个文件夹。所有这些魔法如何起作用?
答案 0 :(得分:2)
魔法由avro-maven-plugin制作,您可以在pom.xml中找到:
<plugin>
<groupId>org.apache.avro</groupId>
<artifactId>avro-maven-plugin</artifactId>
<version>${avro.version}</version>
<executions>
<execution>
<phase>generate-sources</phase>
<goals>
<goal>schema</goal>
</goals>
<configuration>
<sourceDirectory>src/main/resources/avro/io/confluent/examples/streams</sourceDirectory>
<outputDirectory>${project.build.directory}/generated-sources</outputDirectory>
<stringType>String</stringType>
</configuration>
</execution>
</executions>
</plugin>
引用插件文档:
与动态语言的简单集成。不需要代码生成来读取或写入数据文件,也不需要使用或实现RPC协议。代码生成作为可选的优化,仅值得为静态类型语言实现。
这是在预编译时,插件读取 avsc 文件的内容并生成二进制源(对于这种情况,Java类),然后可以在代码中使用。
您可以在target/generated-sources
中看到插件生成的代码。那里将有一个文件夹结构和适当的java(非类)文件。
答案 1 :(得分:1)
WikiFeed
类是在构建时使用您链接到的.avsc文件中的avro-maven-plugin
动态创建的。您可以查看其配置方式in the <plugins>
section of pom.xml。
AbstractKafkaAvroSerDeConfig
类来自kafka-avro-serializer
依赖项。 Eclipse有一种很好的方法可以从编辑器视图中的单个类导航回包含Maven依赖项的Package Explorer,如下所示: