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

Viewed 946

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>

2 Answers

"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.

Try changing your pom with following and run clean install and then you should be able to import.

<configuration>          
   <sourceDirectory>${project.basedir}/src/main/resources/</sourceDirectory>
   <source>${project.build.directory}/generated-sources</source>
</configuration>

In POM InteliJ may give you a fake error after adding this but your build will success.

Related