除了src/main/java文件夹之外,我们还有一个文件夹,其中包含一些生成的java源,这些源是主源所必需的。在需要时,将手动调用代码生成。生成的源代码是将签入源回购。所有的东西都将被构建并打包成,。
将与主要源代码一起编译的生成的java 源的最佳位置是什么?如果是:
/src/generated/java (对于集成测试,src/testInt/java遵循相同的命名逻辑)/generated-src/main/java (与“src目录包含所有用于构建项目的源代码”相冲突)/src/main/generated-java (嗯.generated-java不是一种类型)对于这种情况,第一种选择似乎是最合适的。你认为如何?Maven文档中是否有描述这种情况的东西(我忽略了)?你知道有类似结构的回购吗?
谢谢。
回答
正如@荒谬-头脑所建议的那样,我们正在考虑的方向是将源划分为子模块(这在gradle中运行得很好)。因此,生成的源和其他相关的源将进入它自己的子模块(它们将产生单独的工件),其余的将进入使用此子模块的其他子模块中。谢谢。
发布于 2014-04-07 12:56:15
我认为位置取决于源是如何生成和处理的。
target/main/java/、target/test/java/等等。这段代码不会被签入CVS,因为您可以很容易地重新构建它。如果您清理您的项目,target目录将被删除,源代码将被重新构建。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中即可。
发布于 2015-03-14 14:16:58
据我所知,生成的源代码没有标准的文件夹结构。在我的项目中,我更喜欢src/gen/java符号。
发布于 2020-10-30 16:32:54
我完全同意the accepted answer的观点。对于命名包含第三方工具生成的代码的目录,我只想提供一个稍微不同的建议:
src-gen/main/java背景:在Eclipse/Maven Tycho世界中(代码/资源生成常常扮演很大的角色),有生成代码的src-gen目录,这是作为某种标准约定建立的。(默认的项目布局与Maven略有不同,因为所有源文件都直接在src和src-gen中)。
在一个可以翻译成src-gen/main/java、src-gen/main/resources、src-gen/test/java、src-gen/test/resources的Maven项目中。我更喜欢这样,而不是把所有东西都移到一个“生成的”目录中,因为
src/main/java和src-gen/main/java中的源在目录树中的深度相同。src-gen包含为构建做出贡献的生成源/资源。另一方面,一个名为“生成”的文件夹并没有告诉你太多关于它的内容。它可以包含任何内容,比如生成的文档或生成的测试数据,也可以只是一个临时文件夹。generated/src/main/java的所有上述优点仍然适用(例如,容易清理)关于问题中其他建议的一些想法/意见:
/src/main/generated-java不同,我可能更愿意使用类似/src/main/java-gen这样的方法,在按字母顺序排列目录时,将生成的代码和规则代码放在一起(<lang>-gen也是已经在Eclipse中使用的另一种模式)。gen与简略的官方名称(如src、it等)相吻合,而不是generated。我已经在野外见过几次src/gen/java了,我觉得它比/src/generated/java更常见。另一方面,一些Maven插件使用相当冗长的target/generated-sources/<lang>目录,所以generated-sources/main/java也可以是一个选项,如果您没有进入短名称.最终,我认为命名并不重要,这取决于您的喜好,因为所有这些都不是“正式”惯例。
https://stackoverflow.com/questions/22912900
复制相似问题