如何使用maven执行第三方jar

问题描述:

我正在使用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来做到这一点。 :(

任何建议,将不胜感激。

谢谢!

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

尝试使用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