如何使用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 Plugin的exec:java
或exec: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>
啊哈,我没有想过检查清单以获取类名称,谢谢。我现在正在工作:事实证明,我不需要手动下载并将liquibase jar添加到我的存储库中 - 它已经在Maven Central中作为['liquibase-core'](http://mvnrepository.com) /artifact/org.liquibase/liquibase-core)神器。所以我将liquibase-core设置为依赖关系,并且它完美地执行。谢谢! – 2013-05-02 04:10:22