0

我需要生成一些 Java 源代码,然后由 Maven 编译。问题是生成这些源代码的遗留代码是用 Java 编写的。使用的解决方案(解决方法)是:

  • 带有生成 Java 源代码的项目 A
  • 项目 B 依赖于项目 A 并在 Maven 中调用 antrun 来执行项目 A 中的类

当你构建项目 B 时,Maven 会:

  • 编译项目 A(生成源代码的代码)并执行项目 A 的 pom.xml 告诉它执行的任何其他操作。
  • antrun 这些类(根据项目 B 的 pom.xml 的要求) - 因此将生成源并将其添加到项目 B
  • 编译项目 B 源

这是因为 Antrun 要求项目 A 中的类在执行时已经被编译。然而,这是一个丑陋的解决方案,项目 A 和 B 实际上应该只是一个项目。我知道我应该使用:

<phase>generate-sources</phase>

我看到了一个 Groovy 的例子(http://blog.retep.org/2009/11/07/using-groovy-to-generate-java-sources-in-maven/),但我想知道是否有任何更简单的方法来做到这一点,同时将所有东西都放在一个项目中,而不必将代码生成从 Java 更改为 groovy 或其他东西。

谢谢。

4

1 回答 1

2

我在这种情况下使用 Groovy,但如果您不想这样做,那么拥有两个单独的项目是正确的做法。

而且我不会从另一个项目中编译一个项目,我只会将它们作为单独的项目。通常,代码生成器项目不会像“真实”项目那样经常更改,因此无需一直构建它。

于 2012-12-11T16:17:29.953 回答