我使用Liquibase(通过它的Maven插件)来处理数据库迁移。
然而,并不是所有的Liquibase特性都可以通过Maven获得。其中一个是Generate Changelog,只能通过命令行(使用可下载的liquibase.jar)使用如下命令获得:
java -jar liquibase.jar
--driver=oracle.jdbc.OracleDriver
--classpath=pathtoclasses:jdbcdriver.jar
--changeLogFile=com/example/db.changelog.xml
--url="jdbc:oracle:thin:@localhost:1521:XE"
--username=scott
--password=tiger
generateChangeLog
我如何通过Maven,可移植地执行这个命令?也就是说,我不想将liquibase.jar文件添加到我的项目结构中。
相反,我想把它列为一个依赖项(我可以手动将jar添加到我的本地存储库或Nexus代理),然后在使用Exec Maven Plugin的exec:java
或exec:exec
目标时引用它,但我看不出如何使用具有这些目标的可执行jar来做到这一点。(
如有任何建议,不胜感激。
谢谢!
我不知道,但也许这会对你有帮助。
尝试使用maven exec插件并将其作为mainClass配置参数:
我从MANIFEST得到它。从你的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>