如何将Maven生成的源置于版本控制之下?

时间:2012-04-12 19:13:04

标签: java maven version-control generated-code

我正在使用Maven构建和部署jOOQ。我现在想要使用适当的Maven插件开始生成XJC生成的类(之前,我使用了ant脚本)。这对我来说效果非常好,但我担心一些用户想要在没有Maven的情况下自己构建jOOQ,现在将无法生成那些缺少的源。因此,我希望将这些来源从target/generated-sources/xjc移到src/main/java,以便能够将它们置于版本控制之下。

  • 这是一种常见做法吗?
  • 我该怎么做(我应该使用插件在低级别移动文件,还是应该直接在src/main/java生成文件)?
  • 我还有其他选择吗?

注意,底层的XSD几乎没有变化,所以每次构建时我都 来生成这些源...

2 个答案:

答案 0 :(得分:3)

这是一个可怕的想法,你永远不应该将生成的源代码放在版本控制中,因为它们生成的任何内容都可以更改,然后你的代码不同步。

即使XSD永远不会改变,请注意我永远不会说,几乎没有,正如你所说,这是不同的,我不会把这些来源置于版本控制之下。如果XSD没有改变,可以告诉Maven 每次生成源。

如果你走Maven路线,那么建造你的东西的任何人都应该使用相同的工具链。这不是Maven特有的。如果这是Ant,或带有make文件的C ++项目,你也不想这样做。

如果你真的想提供一个Maven免费独立发行版,那么让Maven生成它,有很多插件可以将所有工件导出为你可以分发的存档。但是,不要为了一些可能不存在的模糊外部要求而牺牲你的构建。

答案 1 :(得分:2)

也许另一种方法是使用Maven程序集插件来压缩所有这些源并将它们作为版本化工件公开。依赖插件允许您从本地或远程存储库中提取这些源,并确保您拥有这些源的正确版本。

(在我看来,保持原样。如果Maven是你的构建系统,那么每个试图构建代码的人都应该使用它)