为什么jOOQ建议将生成的代码放在"/ target"下而不是"/ src"下?

wat*_*ery 5 java sql code-generation maven jooq

查看代码生成器的Maven插件配置的jOOQ示例(接近配置的末尾),我看到生成的文件的目标目录是target/generated-sources/jooq.

由于生成器生成Java代码,你知道为什么这里的建议不是一个子文件夹/src,而是一个完全分离的子文件夹?这有什么理由吗?这是最佳做法还是什么?

Luk*_*der 5

这是一个很好的问题,也可能应该在jOOQ手册中介绍!

这个问题与jOOQ并不是严格相关,而是与源代码生成有关(例如,当使用XJC从XSD生成带有JAXB注释的Java代码时).有些人更喜欢将生成的源代码作为"主要"源代码的一部分,其他人则更喜欢将其保持分开.每种方法背后都有这些想法:

将事物分开(例如目标/生成源)

  • 唯一的"事实来源"是数据库模式.其副本不以源代码形式存储,仅以二进制形式存储.
  • 源代码生成成为构建中不可或缺的一部分.构建应用程序的每个人(开发人员,持续集成)都需要重新生成源代码.这将确保源始终是最新的.

将事物保持在一起(例如src/main/java)

  • 在数据库模式和其生成的副本之间重复相同的"真实".
  • 源代码生成是一个"外部"进程,它不是构建的一部分.
  • 生成的源代码将置于版本控制之下,预计它们将是最新的.
  • 在jOOQ的情况下,可以监视这种版本控制的源以进行数据库更改.

通常没有一种普遍偏好的方式.两者都有其优点.

  • 有趣,尤其是“真相”部分。实际上(这是针对Webapp的),我尝试保持两个附带目标:a)在结帐后使新开发人员可以立即使用所有功能(无需额外的步骤);b)对于一个对Java,Maven等了解为零的Web设计人员,使生活变得尽可能轻松,几乎不需要任何帮助(因此,丢失/过时的文件不会破坏他的工作流程)。到目前为止,事实的重复似乎是合理的,数据库不会发生意外更改,但是进行更改的开发人员负责重新生成支持类。 (2认同)