1

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

我试过了,<additionalSourceRoots>target/java<additionalSourceRoots>但它不起作用。我还尝试将目标/java 减半,但这是唯一处理到未生成的主代码中的其他 JPA 实体的目录。

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

已编辑

在安德烈回答之后,我也尝试过这个,但仍然无法正常工作。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>

谢谢

4

2 回答 2

1

Maven构建助手插件将完成这项工作。

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

于 2012-07-26T15:18:22.213 回答
1

我们的问题是我们在directory1directory2中有一些类被directory3中的类使用。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>
于 2014-02-11T08:20:31.003 回答