2012-12-11 49 views
0

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

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

当你建立B项目,会发生什么是Maven将:

  • 编译项目A(代码生成源),并做其他项目中的pom.xml的告诉它做的事。
  • antrun这些类(由项目B的pom.xml中的要求) - 从而源将得到产生并添加到项目B
  • 编译项目乙源

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

<phase>generate-sources</phase> 

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

谢谢。

+0

我更喜欢将这两个项目放在不同的maven模块中。 –

回答

2

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

而我不会从另一个项目编译一个项目,我只是把它们留作单独的项目。通常代码生成器项目不会像“真实”项目那样频繁更改,所以不需要一直构建它。

+1

+1 - 我还记得[你]哪个问题解决了这个问题,并提供了一个工作解决方案[this](http://stackoverflow.com/questions/6691723/m2e-generated-code-with-exec-maven-plugin)。 – FrVaBe

+0

@FrVaBe真的,只有我早已切换到IntelliJ并不再有这样的问题:-) –

+0

我仍然喜欢eclipse,我很感谢社区的努力来增强它 - 但是maven集成(或者它是eclipse Builder概念?)真的很“奇怪”。 – FrVaBe

相关问题