为 maven 目录结构生成的源文件的位置

2022-09-01 00:09:23

除了文件夹之外,我们还有一个文件夹,其中包含一些生成的java源,这些源是主要来源所必需的。代码生成在需要时手动调用。生成的源将签入源存储库。一切都将被构建并打包在一起src/main/java

对于将要与主要来源一起编译的生成的Java源代码,最佳位置是什么?应该是:

  • /src/generated/java(遵循与集成测试相同的命名逻辑)src/testInt/java
  • /generated-src/main/java(与“src目录包含用于构建项目的所有源材料”冲突)
  • /src/main/generated-java(嗯... 不是类型)generated-java
  • ...?

第一个选项似乎是最适合这种情况的选项。你觉得怎么样?Maven文档中是否有任何内容描述了这种情况(我忽略了)?您知道任何具有类似结构的存储库吗?

谢谢。

正如@Absurd-Mind所建议的那样,我们正在考虑的方向是将源代码拆分为子模块(这在gradle中效果很好)。因此,生成的源和其他一些相关源将进入其自己的子模块(它们将生成单独的工件),其余部分将进入使用此子模块的其他子模块中。谢谢。


答案 1

我认为位置取决于如何生成和处理源。

  1. 源代码是在构建过程中自动生成的:然后我会使用,依此类推。此代码不会签入到 CVS 中,因为您可以相当轻松地重新构建它。如果您清理项目,目录将被删除,源代码将重新生成。target/main/java/target/test/java/target

  2. 源代码是由外部工具或类似工具手动生成的:我会使用 、 等。应签入此代码。一个好处是,一旦你看到顶级目录名称,你就知道下面的所有文件/目录也是生成的。此外,您在顶级目录下具有标准的 maven 目录结构。另一点是清理很容易,只需删除并重新创建它,而无需查看许多其他目录(如您的示例:和src/test/generated-java)。generated/src/main/java/generated/src/test/java/generated/src/main/resources/generatedgeneratedsrc/main/generated-java

编辑:另一个不错的解决方案是创建一个仅包含生成的源代码的maven项目,例如.此项目将是实际应用程序中的依赖项。然后,您只需将生成的源 int 放入 。myproject-generated-1.0.3.jarsrc/main/java


答案 2

据我所知,生成的源没有标准的文件夹结构。在我的项目中,我更喜欢符号。src/gen/java


推荐