2

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

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

请注意,底层 XSD 几乎不会更改,因此我不必每次构建时都生成这些源...

4

2 回答 2

3

这是一个糟糕的主意,你永远不应该将生成的源代码放在版本控制中,因为它们生成的任何东西都可能发生变化,然后你的代码就会不同步。

即使 XSD 永远不会改变,请注意我说 never,不是几乎永远,正如你所说,这是不同的,我不会将源代码置于版本控制之下。如果 XSD 没有改变,Maven 可以被告知不要每次都生成源代码。

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

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

于 2012-04-12T19:16:59.877 回答
2

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

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

于 2012-04-12T19:24:45.017 回答