我的问题是使用gradle和jooq设置构建的最佳方法是什么,具有以下约束:
我有:
- 一个非常基本的gradle构建文件,但可以使用eclipse,jooq,postgres和HSQL
- 由gradle管理的eclipse项目中的一些'核心'java类,包括几个Enums
- 在同一个项目中的几个数据库模式,每个都在自己的文件(schema1.sql,schema2.sql等)中
- 最优秀的JOOQ库,以及HSQLDB中非常酷的SQLFile实用程序
- ANT脚本和java程序的组合,以漂亮的手动方式执行以下步骤,并且我想自动化。
我希望gradle管理以下功能:
- 核心类已编译
- 要加载到postgres数据库中的每个数据库模式(我知道如何在gradle中执行此操作)
- JOOQ库从每个模式生成类(我知道如何在gradle中执行此操作)使用类型映射将一些数据库列映射到适当的核心类Enums(我还不知道如何在gradle中执行此操作,因为我不知道如何让JOOQ任务访问核心类)
在我面前似乎有几种选择,但我不确定哪种选择最好:
- 选项一:将项目拆分为两个项目,“核心”和“db”,后者用于执行列到枚举映射,下游项目取决于两者
- 选项二:保留一个项目,但将生成分为三个步骤“编译核心”,“生成类”,“编译生成的类”,其中每个步骤都可以访问前面生成的伪像。但我真的不知道该怎么做。
我认为,如果有足够的时间,我可能可以解决该怎么做,但我真的很想知道这是否是一个已解决的问题,并且有一种明显的或规范的方式来做到这一点。为了记录,我的偏好是选项二,因为这种模式与其他项目一致,而选项一将使我必须处理的项目数量增加一倍。 (也许这不是那么糟糕......)
很抱歉,如果这是一个模糊的问题 - gradle的文档实际上从“这是怎么做X”的观点来看相当不错,但我真的不觉得我对如何得到了很好的概述所有的东西都挂在一起。
我非常感谢任何帮助。
修改
我有一个相关的问题,即如何进行选项2的具体细节。这个问题和答案在这里Gradle: assembling multiple source-sets into one jar
虽然这个问题和答案描述了如何做第二选项,但他们并没有回答更广泛的问题:“这是最好的方式吗”,所以我将这个问题保持开放。