Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Liquibase应用服务器上的WAR部署和Eclipse中的Gradle插件之间的变更集文件名格式差异_Eclipse_Tomcat7_Liquibase_Gradle Plugin - Fatal编程技术网

Liquibase应用服务器上的WAR部署和Eclipse中的Gradle插件之间的变更集文件名格式差异

Liquibase应用服务器上的WAR部署和Eclipse中的Gradle插件之间的变更集文件名格式差异,eclipse,tomcat7,liquibase,gradle-plugin,Eclipse,Tomcat7,Liquibase,Gradle Plugin,各位 我目前正在开发一个使用Liquibase 3.4.2的应用程序。我们使用Eclipse作为主要IDE,在开发过程中,我们还使用Liquibase Gradle插件[1.2.1]来测试新的变更集等。然而,我们注意到的一点是,根据变更集的应用方式,数据库变更日志中变更集“文件名”的格式是不同的 例如,在我们的生产环境中,我们将应用程序部署为Tomcat 7上的WAR文件—新的变更集添加到DATABASECHANGELOG表中,其文件名格式如下: classpath:path/to/change

各位

我目前正在开发一个使用Liquibase 3.4.2的应用程序。我们使用Eclipse作为主要IDE,在开发过程中,我们还使用Liquibase Gradle插件[1.2.1]来测试新的变更集等。然而,我们注意到的一点是,根据变更集的应用方式,数据库变更日志中变更集“文件名”的格式是不同的

例如,在我们的生产环境中,我们将应用程序部署为Tomcat 7上的WAR文件—新的变更集添加到DATABASECHANGELOG表中,其文件名格式如下:

classpath:path/to/changeset.xml
(例如
classpath:configuration/liquibase/db-changelog-1.0.xml

但是,如果我们试图使用Gradle中的Liquibase插件“update”任务应用变更集,则classpath:前缀将替换为完全限定的类路径,例如:

src/main/resources/configuration/liquibase/db-changelog-1.0.xml

这通常不是一个问题,但是如果我决定从生产环境(其中包含带有
类路径:
前缀的变更集文件名)获取最近的数据转储,以便我可以在我的开发环境(其中我使用Gradle插件)上测试新的变更集我遇到了一个问题,因为Liquibase将尝试重新应用现有的变更集,因为它正在寻找的id/作者/文件名组合将不存在于数据库中。我可以通过临时更新开发环境中的所有文件名值来解决这个问题,以匹配Liquibase Gradle插件所期望的格式,但我想知道是否有某种方法可以通过插件配置来控制这种行为,从而使Liquibase生成相同的变更集文件名格式,而不考虑部署方法

我知道Liquibase
logicalFilePath
属性,我可以使用它来生成一致的、与环境无关的变更集文件名——但我只是想探索一种可能性,即可能有某种方法可以首先通过插件/Liquibase配置来控制这种行为

以下是我们
build.gradle
文件的相关部分供参考:

liquibase
{
  activities
  {
    main
    {
      changeLogFile 'src/main/resources/configuration/liquibase/db-changelog-master.xml'
      url 'jdbc:mysql://host:port/myappdb'
      username 'XXX'
      password 'YYY'
      classpath '$rootDir'
    }
  }

  runList = 'main'
}

有什么想法吗?

我为gradle插件讨论了这个问题。