我加入了在Oracle DB中开发和存储plsql源的项目。
源代码有两个副本——测试服务器和生产服务器。因此SPOT(单点信任)规则被打破了。副本需要不时同步,此任务手动执行。
但最恼人的事情来自配置管理-我不能复制以前的工作项目副本,因为旧的plsql脚本丢失了(新版本有API的变化)。
学习后,我发现了一个很棒的项目:https://code.google.com/p/plsqlmaven
通过以下https://code.google.com/p/plsqlmaven/wiki/Basics,我可以从DB'es转储所有plsql脚本(以及生产和测试之间的差异):
<>之前$ mvn plsql:extract -Dforce之前但我坚持使用plsql:deploy命令(它打印关于丢失jar的错误,我不明白如何创建它)。我将尽快联系作者并填写一些bug报告。
但是我希望社区已经为项目的生命力解决了这样的基本任务。
如何在Java项目中部署plsql脚本到Oracle DB(我的项目使用Maven构建系统)?
PS我看SQL开发人员教程在oracle.com -我找不到如何部署完全plsql文件层次结构一键点击。我更喜欢命令行解决方案…
PPS我向plsqlmaven project:
报告相关错误- https://code.google.com/p/plsqlmaven/issues/detail?id=4(需要将plsql文件部署到Oracle DB的教程)
- https://code.google.com/p/plsqlmaven/issues/detail?id=5(请发布1.11到Maven中心)
- https://code.google.com/p/plsqlmaven/issues/detail?id=6 (plsql:extract dump plsql code to src/main/java在1.10默认)
PPPS我在http://rsdn.ru/forum/java/5011849.flat(俄语)上提问
这是我喜欢使用flyway的情况之一,因为它允许您管理版本和脚本。
在测试时也很方便,因为它允许您将数据库种子设置为给定的状态。
旧的好SQL Plus怎么样?创建主脚本,根据需要调用其他脚本,并将其从命令行传递给sqlplus
(尽管您需要在机器上安装Oracle客户端)。Jisql是一个命令行Java SQL工具——但不要认为它有调用子脚本的选项。使用exec插件从maven运行命令相当容易。
我不做深看:
- http://flywaydb.org
- http://www.liquibase.org/
但似乎这些项目不仅为我的问题提供了解决方案,而且为其他相关问题提供了更复杂的解决方案。
都有Maven集成和开源
你应该使用plsql:compile而不是plsql:deploy:
mvn -Pyourdbprofile plsql:compile
ps:如果您需要一种部署存档的方法,请查看par。