2013-05-01 67 views
0

我正在使用Liquibase(通過它的Maven plugin)來處理數據庫遷移。如何使用maven執行第三方jar

然而並非所有的Liquibase功能都可以通過Maven使用。其中尤其是Generate Changelog,是通過command line(使用可下載的liquibase.jar)用這樣的命令只適用:

java -jar liquibase.jar \ 
--driver=oracle.jdbc.OracleDriver \ 
--classpath=\path\to\classes:jdbcdriver.jar \ 
--changeLogFile=com/example/db.changelog.xml \ 
--url="jdbc:oracle:thin:@localhost:1521:XE" \ 
--username=scott \ 
--password=tiger \ 
generateChangeLog 

如何通過Maven的執行這個命令,便攜?也就是說,我不想將liquibase.jar文件添加到我的項目結構中。

相反,我想將其列爲依賴(我可以在罐子手動添加到我的本地庫或Nexus代理),然後使用類似的Exec Maven Pluginexec:javaexec:exec目標時,引用它,但我可以看不到如何使用這些目標的可執行jar來做到這一點。 :(

任何建議,將不勝感激。

謝謝!

回答

1

我不知道,但可能這會幫助你。

嘗試使用Maven Exec插件,並把作爲一個mainClass配置PARAM這樣的:liquibase.integration.commandline.Main

我把它從MANIFEST.MF從您的jar文件

<plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>exec-maven-plugin</artifactId> 
    <version>1.2.1</version> 
    <executions> 
     <execution> 
     ... 
     <goals> 
      <goal>java</goal> 
     </goals> 
     </execution> 
    </executions> 
    <configuration> 
     <mainClass>liquibase.integration.commandline.Main</mainClass> 
     <arguments> 
     <argument>--driver=oracle.jdbc.OracleDriver</argument> 
     <argument>--changeLogFile=com/example/db.changelog.xml</argument> 
     ... 
     </arguments> 
    </configuration> 
    </plugin> 
+0

啊哈,我沒有想過檢查清單以獲取類名稱,謝謝。我現在正在工作:事實證明,我不需要手動下載並將liquibase jar添加到我的存儲庫中 - 它已經在Maven Central中作爲['liquibase-core'](http://mvnrepository.com) /artifact/org.liquibase/liquibase-core)神器。所以我將liquibase-core設置爲依賴關係,並且它完美地執行。謝謝! – 2013-05-02 04:10:22