【发布时间】:2023-03-24 11:30:01
【问题描述】:
我有一个 Java Maven 项目。我正在使用 liquibase 来更新数据库。
在本地,要更新我的数据库,我只是在命令行中运行:
mvn liquibase:update
在生产环境中,我没有安装 Maven。
我需要实现的是通过控制台,执行命令以在特定的类路径中运行 liquibase 脚本。
有什么想法吗?
编辑:
好的。我正在尝试采用这种方法。我把以下项目放在一个文件夹中:
liquibase 罐子
包含我的应用程序和 liquibase 变更集的战争
-
liquibase.properties:它包含以下内容:
url=jdbc:jtds:sqlserver://xxxxxxxx:xxxx/xxxxx
用户名=xxx
密码=xxxxx
classpath=war_file.war
changeLogFile=WEB-INF/classes/sql/projectName/liquibase/liquibase.xml
然后,在控制台中,我执行:
java -jar liquibase-core-3.0.5.jar update
有效!它会找到我的 liquibase.xml 文件并启动 liquibase 更新。
但是,当它引用 lib 中包含的另一个 jar 文件中的 liquibase.xml 时,它会失败,因为我将它包含在 liquibase.xml 中:
<include file="../other_module/src/main/resources/sql/projectName/liquibase/liquibase.xml" />
如何在不执行“src/main/resources”的情况下添加此“include”并使其找到此 xml?
【问题讨论】:
-
“在特定的类路径中”是什么意思?在命令行上运行 liquibase 会出现什么问题?
-
@Jens 问题是我需要直接在没有 Maven 的生产机器中执行更新(我们不想安装它)。所以我找不到更新产品数据库的正确程序。
-
@Adri 您已经大大改变了最初提出的问题。这是一个关于如何运行命令行客户端的新问题。问题是您的类路径和您在 liquibase 文件中使用的文件系统路径的组合。引用运行时不存在的路径....检查您的war文件中的文件。你会发现没有文件匹配“../other_module/src/main/resources/sql/projectName/liquibase/liquibase.xml”
-
谢谢!现在可以了。感谢大家的支持。
标签: console production liquibase