我是Liquibase和Flyway的新手。试图做一些Hello Worlds。我使用Liquibase和Flyway成功运行了基本的SQL(创建插入等)。有兴趣从命令行运行它们。
Flyway:
LiquiBase:
每次都需要提供正确的文件名
liquibase --driver = com.mysql.jdbc.Driver --classpath = / path / to / classes --changeLogFile = com / example / db.changelog 1 .xml --url = “jdbc:mysql:// localhost / example”--username = dev migrate
liquibase --driver = com.mysql.jdbc.Driver --classpath = / path / to / classes --changeLogFile = com / example / db.changelog 2 .xml --url = “jdbc:mysql:// localhost / example”--username = dev migrate
liquibase中有没有办法自动选择新的xml文件?像Flyway我可以给文件夹名称,Liquibase可以使用它的表DATABASECHANGELOG来查找增量并执行相同的。
仅限Liquibase的第二个问题
在Windows中为了成功运行命令,我必须更改changeLogFile参数......来自...
liquibase --driver=com.mysql.jdbc.Driver --classpath=/path/to/classes --changeLogFile=com/example/db.changelog1.xml --url="jdbc:mysql://localhost/example" --username=dev migrate
到
liquibase --driver=com.mysql.jdbc.Driver --classpath=/path/to/classes --changeLogFile=./db.changelog1.xml --url="jdbc:mysql://localhost/example" --username=dev migrate
即。我将当前的工作目录更改为com / example,然后将changeLogFile参数修改为指向当前文件夹中的文件并执行命令。
有没有办法可以指向另一个文件夹中的changeLogFile(除了当前文件夹)
答案 0 :(得分:0)
要使命令行更容易使用liquibase,可以做的一件事是创建一个名为liquibase.properties
的文件,并将其保存在运行该命令的目录中。如果我没记错的话,命令行将查找具有该名称的文件并使用该文件中的属性,而不是要求命令行上的所有选项。有关详细信息,请参阅http://www.liquibase.org/documentation/liquibase.properties.html和http://www.liquibase.org/documentation/command_line.html#using_a_liquibase.properties_file。那里的文档有这个:
如果您不想总是在命令行上指定选项,那么 可以创建包含默认值的属性文件。默认情况下, Liquibase将在中查找名为“liquibase.properties”的文件 当前工作目录,但您可以指定备用位置 使用--defaultsFile标志。如果您在a中指定了一个选项 属性文件并在命令行中指定相同的选项 命令行上的值将覆盖属性文件值。
是的,您可以让liquibase自动从目录加载文件。您必须有一个从命令行或您的属性文件引用的简单changelog.xml,但是该更改日志只能引用包含更多更改日志文件的另一个目录。 <includeAll>
标记用于此目的(有关详细信息,请参阅http://www.liquibase.org/documentation/includeall.html)。
此外,是的,您可以将changelog文件放在任何您喜欢的位置。