2010-10-06 78 views
2

我有一个支持多种数据库的应用程序,包括SQL * Server 2008,Oracle 10G,Oracle 11G,MYSQL 5等。已经在Maven中完成了三件事:如何使用Maven处理多个数据库模式创建脚本?

1)数据库,以便系统可以在构建期间将其用于集成测试。

2)的Maven调用Hibernate3的插件来自动生成使用就是hbm2ddl架构脚本。

3)哈德森矩阵构建设置,使集成测试是针对每一个数据库自动运行。

我已经注意到(没有惊奇),通过就是hbm2ddl创建的脚本取决于数据库方言是不同的。

然而,包装为客户提供系统的时候,我们需要手动进入各种哈德森建立,并从那里采摘数据库特定脚本。一个乏味的过程,我相信会在最糟糕的时刻咬我们!

反正是有,我们可以有Maven的自动生成,然后收集了所有这些数据库脚本,使他们能够沿着侧打包我们交付给客户WAR文件?我正在考虑Maven assembly插件将它压缩一切,但我不确定!

回答

1

无论如何,我们可以让Maven自动生成,然后收集所有这些数据库脚本,以便将它们一起打包发送给客户的WAR文件? 我正在考虑Maven assembly插件将它压缩一切,但我不确定!

的问题是,脚本是每个配置文件运行产生的(至少这是我的理解),除非你在某种独特的文物打包他们(可能是组件)和安装/在每次运行部署它们,您将无法在Maven的后续步骤中抓取它们。

的替代方案是具有所定义的hbm2ddl目标几个执行模块。但我担心这会打败整个配置文件。

或者你也许可以使用M2 Extra Steps Plugin来依赖Hudson并为Maven构建添加一些构建后步骤(不知道这是否有帮助)。

+0

不知道这会有所帮助,但让我知道你的想法。 – 2010-10-06 17:50:58

+0

想了一些之后,我认为使用Maven的数据库机制可能是错误的。这对于开发者机器来说非常简单和有用!但是对于CI构建机器...并不好。 – HDave 2010-10-06 18:22:50

+0

@帕斯卡尔 - 我正在认真考虑放弃hbm2ddl并与Liquibase合作。随着项目的成熟,我将不得不提供不同版本之间的迁移路径。它看起来也是标签工具可以很好地处理集成测试数据的加载。我唯一的问题是让Maven liquibase插件在所有方言中生成SQL脚本...... – HDave 2010-10-06 21:28:01

相关问题