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

Java 如何将Maven生成的源代码置于版本控制之下?,java,maven,version-control,generated-code,Java,Maven,Version Control,Generated Code,我正在使用Maven构建和部署。现在,我想开始使用适当的Maven插件生成XJC生成的类(之前,我使用了ant脚本)。这对我来说非常好,但是我担心一些想要在没有Maven的情况下自己构建jOOQ的用户现在在生成这些缺失的源代码时会遇到麻烦。因此,我想将这些源代码从target/generated sources/xjc移到src/main/java,以便能够将它们置于版本控制之下 这是惯例吗 我该怎么做(我应该使用插件在底层移动文件,还是应该直接将文件生成到src/main/java) 我还有

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

  • 这是惯例吗
  • 我该怎么做(我应该使用插件在底层移动文件,还是应该直接将文件生成到
    src/main/java
  • 我还有其他选择吗

请注意,底层XSD几乎从不更改,因此我不必在每次构建时都生成这些源代码…

这是一个糟糕的想法,您永远不应该将生成的源代码置于版本控制中,因为生成源代码的任何内容都可能更改,然后您的代码就不同步了

即使XSD从未更改,请注意,我说过从未,几乎从未,正如您所说,这是不同的,我不会将源代码置于版本控制之下。如果XSD没有改变,Maven每次都会被告知生成源代码

如果你走的是Maven路线,那么任何构建你的东西的人都应该使用相同的工具链。这不是Maven特有的。如果这是ANT,或者是一个带有make文件的C++项目,那么你也不想这样做。
如果你真的想提供一个Maven免费的独立发行版,那么让Maven生成它,有很多插件可以将所有工件导出为一个归档文件,你可以发布。但是,不要因为一些模糊的外部需求而影响构建。

这是一个糟糕的想法,您永远不应该将生成的源代码置于版本控制中,因为生成源代码的任何内容都可能发生更改,然后您的代码就不同步了

即使XSD从未更改,请注意,我说过从未,几乎从未,正如您所说,这是不同的,我不会将源代码置于版本控制之下。如果XSD没有改变,Maven每次都会被告知生成源代码

如果你走的是Maven路线,那么任何构建你的东西的人都应该使用相同的工具链。这不是Maven特有的。如果这是ANT,或者是一个带有make文件的C++项目,那么你也不想这样做。
如果你真的想提供一个Maven免费的独立发行版,那么让Maven生成它,有很多插件可以将所有工件导出为一个归档文件,你可以发布。但是,不要因为一些可能不存在的模糊的外部需求而损害您的构建。

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


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

也许另一种选择是使用Maven汇编插件压缩所有这些源代码,并将其作为版本化工件公开。依赖插件将允许您从本地或远程存储库中提取这些源代码,并确保您拥有这些源代码的正确版本


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

好的,我可以在最后一段中看到你的观点。不使用Maven的用户确实拥有Maven交付的源代码,因此他们可以直接构建这些源代码。谢谢分享你的想法,我能在最后一段看到你的观点。不使用Maven的用户确实拥有Maven交付的源代码,因此他们可以直接构建这些源代码。谢谢分享你的想法,你可能是对的。我没有想过使用Maven直接交付源代码,并让少数用户使用该交付来构建我的产品。你甚至不需要汇编插件——标准的Maven jar构建将包括生成的源代码。我经常使用这一点来避免m2e/M2EclipseHell:将xml模式/生成的JAXB源放在依赖项中,并将该项目大部分关闭。谢谢,您可能是对的。我没有想过使用Maven直接交付源代码,并让少数用户使用该交付来构建我的产品。你甚至不需要汇编插件——标准的Maven jar构建将包括生成的源代码。我经常使用这一点来避免m2e/M2EclipseHell:将xml模式/生成的JAXB源放在依赖项中,并将该项目大部分关闭。