将Apache Avro模式拆分为多个文件,同时在avro-maven-plugin中具有多个目标

时间:2019-03-28 09:53:37

标签: maven avro

我想拆分我的avro模式文件。为了生成源代码,我使用了avro-maven-plugin。我关注了这篇文章:

Can I split an Apache Avro schema across multiple files?

它可以正常工作,但就我而言,我想设定不同的目标,然后由于我导入的文件只是一个模式而不是一个协议而收到关于[ERROR] Failed to execute goal org.apache.avro:avro-maven-plugin:1.8.2:protocol (schemas) on project AvroTestProject: Execution schemas of goal org.apache.avro:avro-maven-plugin:1.8.2:protocol failed: No protocol name specified: ...的错误消息。

这是我的pom.xml的代码段:

        <plugin>
            <groupId>org.apache.avro</groupId>
            <artifactId>avro-maven-plugin</artifactId>
            <version>${avro.version}</version>
            <executions>
                <execution>
                    <id>schemas</id>
                    <phase>generate-sources</phase>
                    <goals>
                        <goal>schema</goal>
                        <goal>protocol</goal>
                        <goal>idl-protocol</goal>
                    </goals>
                    <configuration>
                        <sourceDirectory>${project.basedir}/src/avro/</sourceDirectory>
                        <outputDirectory>${project.basedir}/src/</outputDirectory>
                        <imports>
                            <import>${project.basedir}/src/avro/TestSchema.avsc</import>
                        </imports>
                    </configuration>
                </execution>
            </executions>
        </plugin>

是否有一种仅针对特定目标声明导入的方法?还是有其他解决此问题的可能性?

1 个答案:

答案 0 :(得分:0)

问题在于您在const showProductData = Object.values(ProductData).map(function(value) { return <div>Weight: {value.ProductWeight}</div>; }); 中的目标定义。 因此,可以考虑仅设置avro-maven-plugin目标,以避免执行schemaprotocol,因为它与idl-protocol块中的模式声明冲突。