简体   繁体   中英

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>

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM