1

我正在使用Liquibase(通过其Maven 插件)来处理数据库迁移。

然而,并非所有 Liquibase 功能都可以通过 Maven 获得。特别是Generate Changelog,只能通过命令行(使用可下载的 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 文件添加到我的项目结构中。

相反,我想将它列为依赖项(我可以手动将 jar 添加到我的本地存储库或 Nexus 代理),然后在使用Exec Maven Pluginexec:java或目标之类的东西时引用它exec:exec,但我看不到如何使用具有这些目标的可执行 jar 来执行此操作。:(

任何建议将不胜感激。

谢谢!

4

1 回答 1

2

我不知道,但这可能会对你有所帮助。

尝试使用 maven exec 插件并将其作为 mainClass 配置参数:liquibase.integration.commandline.Main

我从你的 jar 文件中的 MANIFEST.MF 得到它

  <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>
于 2013-05-01T09:01:33.483 回答