我正在将大型 Ant 构建转换为 Maven。作为 Ant 构建的一部分,我们有几个步骤通过调用项目的一个类来创建 Java 类,简化为:
javac SomeGenerator.java
java SomeGenerator generated # generate classes in generated/
javac generated/*.java
我已将每个生成器拆分到其自己的 Maven 模块中,但我遇到了无法运行生成器的问题,因为它尚未在 generate-sources
阶段编译。
我试过类似的东西
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.1.1</version>
<executions>
<execution>
<id>generate-model</id>
<goals>
<goal>java</goal>
</goals>
<phase>generate-sources</phase>
<configuration>
<mainClass>DTOGenerator</mainClass>
<arguments>
<argument>${model.generated.dir}</argument>
</arguments>
</configuration>
</execution>
</executions>
</plugin>
遗憾的是,由于上述原因,这行不通。将代码生成器分别分成两个项目,一个用于编译生成器,另一个用于生成 DTO,这似乎有点过分了。
有哪些替代方案?
使用 Maven 2.2.1。
最佳答案
你可以在generate-sources阶段执行maven-compile-plugin。只需在现有执行之前添加另一个执行并配置它,以便它只为生成器获取源。
或者将项目一分为二:使用单独的 POM 构建生成器,并将生成器库作为生成源的 POM 的依赖项包含在内。
我个人会拆分项目。使构建文件更干净,更易于维护。
关于java - 通过在 Maven 中运行项目的 java 类来生成源代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2147115/