我有一个简单的代码生成器 G,它从我的项目中读取一个接口 A 并从中生成一个新的接口 B。因此我需要实现这一点:
- 编译 A
- 执行 G
- 编译 B
第 1 步和第 3 步由 maven-compiler-plugin 处理,而第 2 步我使用 maven-exec-plugin。目前第 1 步和第 2 步运行良好,但我不知道如何再次运行编译器插件来编译新生成的 B 版本。
maven可以做到这一点,还是有另一种方法可以解决我的问题?
解决方案:
根据 khmarbaise 的回答,我将其添加到我的 pom.xml 中,以让第一次编译在generate-sources阶段运行,并在process-sources阶段生成代码,使生成的类在编译阶段可用:
<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>