2010-07-19 43 views
3

上週我閱讀了關於liquibase快速入門和所有相關教程,但我覺得我沒有得到關於使用它連續更改數據庫和我還有一些問題還沒有解決。如何在svn的maven項目中實際使用liquibase

我正在開發一個應用程序在netbeans中使用maven與3個模塊:dbunit模塊,服務模塊和webapp模塊。正如你可能已經猜到dbunit做的數據庫的東西,服務是在它的頂部和Web應用程序使用因此,父pom已經爲所有jar和插件聲明瞭所有groupid,artifactids和版本。

我設法生成命令行更改日誌文件,因爲該數據庫已經存在,並假設我設置都正確使用liquibase Maven插件:

問題1:將liquibase目標是因爲現在什麼我正在做任何數據庫更改?

問題2:如果我想向數據庫添加一個新表,我是否會將這個新的changeSet添加到相同的更改日誌文件中,或者我必須創建一個新的changelog.xml文件?

問題3:我相信當DbUnit的運行它會運行變更,但就是需要添加插件到其中的web應用模塊也(可能運行與貨物插件部署之前liquibase目標)或DbUnit的意志照顧呢?

問題4:究竟顛覆有助於保持更新日誌的狀態(假設只有一個的changelog參考,第2題)

感謝讀這篇文章,您的幫助。

回答

6
  1. http://www.liquibase.org/documentation/maven

所以您應將liquibase執行綁定到一個階段像

<phase>process-resources</phase> 

但我用彈簧執行了。所以每次我的應用程序啓動時,它都會啓動一個liquibase執行程序來執行數據庫中缺少的更新日誌。這很好,因爲當你準備好你的工作和測試時,liquibase已經更新了你的開發數據庫,​​但不是你的生產數據庫。但是當你安裝你的戰爭並開始你的web應用程序時,liquibase會自動處理它以使你的數據庫進入當前狀態。因此,在部署新版本之前,您不必記得做一些額外的工作。

  • 保持你changelog.xml與包括至更改日誌文件這樣

    http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-1.9。 XSD「>
    當你想要一個新表,添加一個更新日誌,0002.xml文件,並引用它在你的主人changelog.xml

  • 看到答案1.我會把你的web應用模塊中了。

  • 你應該有許多更新日誌文件。所以這個問題是不適用的。

  • +0

    感謝您的解釋,我成了我的mind.There更清楚一件事我想知道我的about.In項目'Spring'使用'hibernate'.i放棄我的數據庫的表,把'就是hbm2ddl ''驗證'並將生成的changelog添加到'master changelog'中,似乎當測試用例運行時,他們失敗是因爲他們找不到表,我想知道是否還有另一個技巧。再次感謝您的回覆 – 2010-07-21 08:55:36

    +0

    我認爲您應該只對最初的更新日誌使用hbm2ddl。我根本不使用hbm2ddl。 – Janning 2010-07-25 15:18:41