Apache Avro maven 插件似乎忽略配置

Pra*_*ala 4 maven avro avro-tools

我正在使用 apache avro maven 插件,目的是从 avsc 生成 java。我在 m1 mac 上运行这个(虽然我没有在网上看到任何关于这个问题的信息)。

问题似乎是我的配置没有被采纳。代码生成似乎可以使用默认值。例如

它正在寻找 avsc。

Failed to execute goal org.apache.avro:avro-maven-plugin:1.10.2:schema (default-cli) on project falc-proxy: neither sourceDirectory: /Users/pdhulipala/falc-proxy/src/main/avro or testSourceDirectory: /Users/pdhulipala/falc-proxy/src/test/avro are directories
Run Code Online (Sandbox Code Playgroud)

插件详细信息定义如下。

<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>${project.basedir}/src/main/resources/avro/</sourceDirectory>
                            <outputDirectory>${project.basedir}/src/main/resources/java/</outputDirectory>
                            <imports>
                                <import>${project.basedir}/src/main/resources/avro/MsgHeader.avsc</import>
                                <import>${project.basedir}/src/main/resources/avro/Request.avsc</import>
                            </imports>
                            <includes>
                                <include>*.avsc</include>
                            </includes>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
Run Code Online (Sandbox Code Playgroud)

想知道是否有办法调试这个/添加日志记录等。

小智 10

我通过将配置部分移至与执行标记相同的级别来解决此问题。现在我可以使用该插件生成架构。这是我的配置:

<plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <version>${project.parent.version}</version>
        </plugin>
        <plugin>
            <groupId>org.apache.avro</groupId>
            <artifactId>avro-maven-plugin</artifactId>
            <version>1.11.0</version>
            <executions>
                <execution>
                    <phase>none</phase>
                    <!-- <phase>generate-sources</phase>-->
                    <goals>
                        <goal>schema</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <createSetters>false</createSetters>
                <sourceDirectory>${project.basedir}/src/main/resources/avro/</sourceDirectory>
                <outputDirectory>${project.basedir}/src/main/java/</outputDirectory>
                <fieldVisibility>PRIVATE</fieldVisibility>
                <stringType>String</stringType>
            </configuration>
        </plugin>
    </plugins>
Run Code Online (Sandbox Code Playgroud)


小智 5

问题解决了。只需将配置块直接移至插件下方即可。看起来,当你想用 mvn package 生成代码时,配置块必须位于执行标签下,而当你想生成直接运行目标 avro:schema 的代码时,配置块必须直接位于插件块下。如果您想执行这两项操作,则必须复制配置块。检查以下示例...

https://github.com/xmeng1/avro-maven-demo/blob/master/pom.xml