我在命令行方式中使用liquibase 3.4.1。 我的命令如下:
D:\Work>java -cp ".\*" liquibase.integration.commandline.Main --defaultsFile=liquibase_methods.properties tagExists 4.5
效果很好:
The tag 4.5 does not exist in user@jdbc:oracle:thin:@url:port:SID
Liquibase 'tagExists' Successful
当我执行echo %errorlevel%
时,操作系统告诉我0,就像上一个命令被正确释放一样。
有一个很容易的'获取退出代码的方法!= tagExists命令返回标签不存在时= 0
很容易'我的意思是比解析结果文本和寻找关键字更合适..
此致 纪尧姆
答案 0 :(得分:1)
这需要更改liquibase源代码。查看课程src/main/java/liquibase/integration/commandline/Main.java,您可以看到是否存在错误,liquibase只会执行return
。这需要进行更改,以便它System.exit(int)
,并且需要更改系统,以便命令本身返回某种成功代码。
我认为Nathan正在努力改进4.0,但对于3.x系列,这似乎是一个相当直接的改变。像这样的变化的问题是它会对其他系统产生的意外后果。我建议在github上分配项目并自己进行更改,然后创建一个pull请求,看它是否可以添加到主线代码中。