我有一个简单的代码生成器G,它从我的项目中读取接口A并从中生成一个新的接口B.因此我需要实现这个目标:
步骤1和3由maven-compiler-plugin处理,而对于第2步,我使用maven-exec-plugin。目前步骤1和2运行良好,但我无法弄清楚如何再次运行编译器插件来编译新生成的B版本。
这可能与maven有关,还是有另一种方法来解决我的问题?
解决方案:
基于khmarbaise的答案,我将此添加到我的pom.xml中,让第一次编译在 generate-sources 阶段运行,代码生成在 process-sources phase是什么让生成的类在 compile 阶段可用:
<build>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<executions>
<execution>
<id>pre-compile</id>
<phase>generate-sources</phase>
<goals>
<goal>compile</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.2.1</version>
<executions>
<execution>
<phase>process-sources</phase>
<goals>
<goal>java</goal>
</goals>
<configuration>
<mainClass>com.example.MyCodeGenerator</mainClass>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
答案 0 :(得分:5)
让我们在generate-sources中进行编译。只需将maven-compiler-plugin配置为在该特定生命周期阶段运行,并将生成的代码(编译代码)放在除默认值之外的其他位置。其次让你的执行在之后的阶段(进程源)运行,最后让其余的像往常一样。 结果是你必须将maven-compiler-plugin绑定到generate-sources阶段,exec-plugin绑定到process-sources生命周期阶段。