小编典典

用于Maven目录结构的生成源文件的位置

java

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

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

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

对于这种情况,第一种选择似乎是最合适的选择。你怎么看?Maven文档中有什么描述这种情况的(我忽略了)?您知道结构类似的回购吗?

谢谢。

回答

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


阅读 214

收藏
2020-11-13

共1个答案

小编典典

我认为位置取决于源的生成和处理方式。

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

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

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

2020-11-13