Search code examples
javamavenavro

Add generated Apache Avro source with build-helper-maven-plugin


I'm using Apache avro to generate some pojos, all work very well in run, expect that the generated source is marked as inexistent in imports on IDE (intellij) .

I tried to use build-helper-maven-plugin to add source, but it doesn't work this is my maven configuration for apache avro and build helper plugins :

<plugin>
    <groupId>org.apache.avro</groupId>
    <artifactId>avro-maven-plugin</artifactId>
    <version>${avro.version}</version>
    <configuration>
        <stringType>String</stringType>
    </configuration>
    <executions>
        <execution>
            <phase>generate-sources</phase>
            <goals>
                <goal>schema</goal>
            </goals>
            <configuration>
                <sourceDirectory>${project.basedir}/src/main/avro/</sourceDirectory>
                <outputDirectory>${project.build.directory}/generated-sources/</outputDirectory>
                <imports>
                    <import>${project.basedir}/src/main/avro/errorkind.avsc</import>
                </imports>
            </configuration>
        </execution>
    </executions>
</plugin>

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>build-helper-maven-plugin</artifactId>
    <version>3.2.0</version>
    <executions>
        <execution>
            <id>add-source</id>
            <phase>generate-sources</phase>
            <goals>
                <goal>add-source</goal>
            </goals>
            <configuration>
                <sources>
                    <source>${project.build.directory}/generated-sources</source>
                </sources>
            </configuration>
        </execution>
    </executions>
</plugin>


Solution

  • "generated-sources" reside under ${project.build.directory}/target folder Also, try marking "generated-sources" as source directory. You can do that by:

    Project Structure → Modules → Click the generated-sources folder and make it a sources folder.