首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >生成的maven目录结构源文件的位置

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

Stack Overflow用户
提问于 2014-04-07 12:49:02
回答 4查看 46.8K关注 0票数 47

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

将与主要源代码一起编译的生成的java 的最佳位置是什么?如果是:

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

对于这种情况,第一种选择似乎是最合适的。你认为如何?Maven文档中是否有描述这种情况的东西(我忽略了)?你知道有类似结构的回购吗?

谢谢。

回答

正如@荒谬-头脑所建议的那样,我们正在考虑的方向是将源划分为子模块(这在gradle中运行得很好)。因此,生成的源和其他相关的源将进入它自己的子模块(它们将产生单独的工件),其余的将进入使用此子模块的其他子模块中。谢谢。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-04-07 12:56:15

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

  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)。

编辑:另一个很好的解决方案是创建一个maven项目,它只包含生成的源代码,比如myproject-generated-1.0.3.jar。这个项目将是您实际应用程序中的一个依赖项。然后,您只需将生成的源放在int src/main/java中即可。

票数 50
EN

Stack Overflow用户

发布于 2015-03-14 14:16:58

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

票数 6
EN

Stack Overflow用户

发布于 2020-10-30 16:32:54

我完全同意the accepted answer的观点。对于命名包含第三方工具生成的代码的目录,我只想提供一个稍微不同的建议:

代码语言:javascript
复制
src-gen/main/java

背景:在Eclipse/Maven Tycho世界中(代码/资源生成常常扮演很大的角色),有生成代码的src-gen目录,这是作为某种标准约定建立的。(默认的项目布局与Maven略有不同,因为所有源文件都直接在srcsrc-gen中)。

在一个可以翻译成src-gen/main/javasrc-gen/main/resourcessrc-gen/test/javasrc-gen/test/resources的Maven项目中。我更喜欢这样,而不是把所有东西都移到一个“生成的”目录中,因为

  • src/main/javasrc-gen/main/java中的源在目录树中的深度相同。
  • 更清楚的是,src-gen包含为构建做出贡献的生成源/资源。另一方面,一个名为“生成”的文件夹并没有告诉你太多关于它的内容。它可以包含任何内容,比如生成的文档或生成的测试数据,也可以只是一个临时文件夹。
  • generated/src/main/java的所有上述优点仍然适用(例如,容易清理)
  • 在google上快速搜索之后,看起来已经有一些使用这种模式的项目了。

关于问题中其他建议的一些想法/意见:

  • /src/main/generated-java不同,我可能更愿意使用类似/src/main/java-gen这样的方法,在按字母顺序排列目录时,将生成的代码和规则代码放在一起(<lang>-gen也是已经在Eclipse中使用的另一种模式)。
  • 在我看来,gen与简略的官方名称(如srcit等)相吻合,而不是generated。我已经在野外见过几次src/gen/java了,我觉得它比/src/generated/java更常见。另一方面,一些Maven插件使用相当冗长的target/generated-sources/<lang>目录,所以generated-sources/main/java也可以是一个选项,如果您没有进入短名称.

最终,我认为命名并不重要,这取决于您的喜好,因为所有这些都不是“正式”惯例。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22912900

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档