在编译阶段后通过Maven插件生成新的源代码

joe*_*ohn 5 java code-generation pom.xml maven

我有一个Maven项目,我需要在其中执行两个代码生成步骤.一个生成一些Java类型,然后第二个依赖于这些Java类型来生成更多代码.有没有办法在我的构建过程中发生这两个步骤?

目前我的步骤是:

  1. 执行第一个代码生成插件(期间generate-sources)
  2. 添加生成类型的目录以构建路径
  3. 执行第二代码生成插件(期间compile)

但是我的问题是第二代码生成插件生成的任何内容都不会被编译(因为编译阶段已经完成).如果我将第二个代码生成插件附加到早期阶段,则会失败,因为它需要第一个代码生成插件中的类出现在类路径中.

我知道我可以把它分成两个模块,一个依赖于另一个,但我想知道这是否可以在一个pom中实现.看起来需要一种在正常编译阶段完成后再次调用编译的方法.

有任何想法吗?

sse*_*ano 5

您始终可以配置两个编译器插件的执行,两者都与编译阶段相关联.在其中一个你包括额外的东西:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-compiler-plugin</artifactId>
  <version>2.3.2</version>
  <executions>
    <execution>
      <id>one</id>
      <phase>compile</phase>
      <goals>
        <goal>compile</goal>
      </goals>
      <configuration></configuration>
    </execution>  
    <execution>
      <id>two</id>
      <phase>compile</phase>
      <goals>
        <goal>compile</goal>
      </goals>
      <configuration>
      <compilerArgument>-verbose -bootclasspath ${java.home}\lib\rt.jar</compilerArgument>
      </configuration>
    </execution>
  </executions>
<plugin>
Run Code Online (Sandbox Code Playgroud)

你可以尝试一下 <includes><include>path/</include></includes>

根据官方文件:

当给定与特定阶段匹配的多个执行时,它们将按照POM中指定的顺序执行,并且首先运行继承的执行.

但我完全没有得到你想要的东西. http://maven.apache.org/plugins/maven-compiler-plugin/examples/set-compiler-source-and-target.html