Liquibase可以自动提取像Flyway这样的新变更集文件吗?

时间:2016-07-24 07:22:02

标签: liquibase flyway

我是Liquibase和Flyway的新手。试图做一些Hello Worlds。我使用Liquibase和Flyway成功运行了基本的SQL(创建插入等)。有兴趣从命令行运行它们。

Flyway:

  • 很容易入手
  • 我必须将sql文件以正确的命名格式'V1_xxxx.sql'放入正确的文件夹'flyway / sql'&运行'flyway migrate'
  • 最好的部分是在给定正确的文件名的情况下自动获取任何新的sql文件。

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(除了当前文件夹)

1 个答案:

答案 0 :(得分:0)

要使命令行更容易使用liquibase,可以做的一件事是创建一个名为liquibase.properties的文件,并将其保存在运行该命令的目录中。如果我没记错的话,命令行将查找具有该名称的文件并使用该文件中的属性,而不是要求命令行上的所有选项。有关详细信息,请参阅http://www.liquibase.org/documentation/liquibase.properties.htmlhttp://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文件放在任何您喜欢的位置。