我在使用Liquibase變更上下文以在我的Grails應用程序中很好地播放時遇到問題。我有一組更改集,我只想在「測試」環境中運行。但是,它們每次都在執行。我想我有一個配置問題。Liquibase與Grails的上下文
Liquibase文檔聲明您只需將context =「test」屬性添加到您的changeSet。對於我的概念驗證測試,我將創建一個插入的病人記錄,我想在測試中插入,但不在本地開發環境中插入。我的變更增加了上下文:
<changeSet id="v1.1-garbage-1" author="Eric" context="test">
<insert tableName="patient">
[...]
</insert>
</changeSet>
然後我DataSource.groovy的文件中,我定義我的環境:
environments {
development {
dataSource {
dbCreate = "create"
jndiName = "java:comp/env/jdbc/mydatabasename"
}
}
test {
dataSource {
dbCreate = "create"
url = "jdbc:h2:mem:testDb;MVCC=TRUE;LOCK_TIMEOUT=10000"
}
}
[...]
所以我有兩個環境,開發和測試。然後在我的Config.groovy中,我成立了Grails的databasemigration插件只有在上下文中的「發展」(這個概念驗證):
// Database Migration plugin
grails.plugin.databasemigration.updateOnStart = true
grails.plugin.databasemigration.updateOnStartFileNames = ['changelog.xml']
grails.plugin.databasemigration.autoMigrateScripts = ['RunApp', 'TestApp']
grails.plugin.databasemigration.changelogFileName = "changelog.xml"
grails.plugin.databasemigration.development.updateOnStartContexts = ['development']
在這最後一行,按我的理解,我告訴databasemigration插件將「開發」上下文設置爲「開發」,因此當Liquibase執行時,它不應該在上面運行我的變更集,因爲它是在「測試」上下文中定義的。
但是,當我運行應用程序時,我的變更集被執行。我在設置中弄錯了什麼或錯過了什麼?