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

新手上路,请多包涵

除了 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 中工作得很好)。因此,生成的源和一些其他相关的源将进入它自己的子模块(它们将产生单独的工件),其余的将进入使用这个的其他子模块。谢谢你。

原文由 igr 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 890
2 个回答

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

  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

原文由 Absurd-Mind 发布,翻译遵循 CC BY-SA 3.0 许可协议

据我所知,生成的源代码没有标准的文件夹结构。在我的项目中,我更喜欢 src/gen/java 这种表示法。

原文由 bhdrkn 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题