如何在maven-apt-plugin中定义一个额外的源目录

时间:2012-07-26 14:49:17

标签: maven maven-plugin

我们在maven目标“generate”期间在target / java目录中生成了一些JPA实体。但并非所有这些都是生成的,因为其中一些是在我们的src / main / java目录中。有没有办法配置插件来指定多个源目录?

我尝试使用<additionalSourceRoots>target/java<additionalSourceRoots>,但它不起作用。我也尝试添加target / java,但是这是唯一一个处理到主代码中未生成的JPA实体的目录。

我知道我可以尝试一种解决方法,尝试将生成的源复制到另一个目录并将其他实体放在那里,但我想知道是否有一个“干净”的解决方案。

EDITED

在安德烈回答之后我也尝试了这个,但仍然无效。 maven-apt-plugin无法看到生成的类位于target / java中的类。我尝试使用<additionalSourceRoots>语法不同而没有运气.. :(

    <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>build-helper-maven-plugin</artifactId>
            <version>1.7</version>
            <executions>
              <execution>
                <id>add-source</id>
                <phase>generate-sources</phase>
                <goals>
                  <goal>add-source</goal>
                </goals>
                <configuration>
                  <sources>
                    <source>target/java</source>                        
                  </sources>
                </configuration>
              </execution>
            </executions>
        </plugin>
        <plugin>
          <groupId>com.mysema.maven</groupId>
          <artifactId>maven-apt-plugin</artifactId>
          <version>1.0.2</version>
          <executions>
            <execution>
              <goals>                   
                <goal>process</goal>
              </goals>
              <configuration>
                <additionalSourceRoots>
                    <additionalSourceRoot>target/java</additionalSourceRoot>
                </additionalSourceRoots>                    
                <outputDirectory>target/generated-sources/java</outputDirectory>
                <processor>com.mysema.query.apt.jpa.JPAAnnotationProcessor</processor>
              </configuration>
            </execution>
          </executions>
        </plugin>

由于

2 个答案:

答案 0 :(得分:1)

Maven build helper pligin将完成这项工作。

然后使用“additionalSourceRoots”参数在maven-apt-plugin中添加更多源根。

答案 1 :(得分:1)

我们的问题是我们在目录3 中的类中使用了 directory1 directory2 中的一些类。 directory3 中的类是带有JPA注释的类。我们还发现将带有JPA注释类的目录作为最后一个目录是很重要的,否则apt插件就没有生成类。

令人惊讶的是,我试图添加额外的sourceDirectory标签,它对我有用:

    <plugin>
        <groupId>com.mysema.maven</groupId>
        <artifactId>maven-apt-plugin</artifactId>
        <version>1.0</version>
        <executions>
            <execution>
                <phase>generate-sources</phase>
                <goals>
                    <goal>process</goal>
                </goals>
                <configuration>
                    <sourceDirectory>__directory1__</sourceDirectory>
                    <sourceDirectory>__directory2__</sourceDirectory>
                    <sourceDirectory>__directory3__</sourceDirectory>
                    <outputDirectory>target/generated-sources</outputDirectory>
                    <processor>com.mysema.query.apt.jpa.JPAAnnotationProcessor</processor>
                </configuration>
            </execution>
        </executions>
    </plugin>