【发布时间】:2016-01-19 05:16:28
【问题描述】:
我们正在开发 Java Maven 项目。我们正在处理数据库以获取他们的模式。其中之一是 Sybase 数据库,因此我们使用 DDLGen 命令行实用程序生成它的 ddl。为了使用 ddlgen,我在代码中导入了这三个 jar,并将它们添加到运行 jar 中的类路径中:
- jconn4.jar
- DDLGen.jar
- dsparser.jar
之后,我们使用以下代码生成 DDL:
String command = "java -cp \"myPath\\lib\\com\\jconn4\\4.0\\jconn4-4.0.jar;myPath\\lib\\com\\dsparser\\4.0\\dsparser-4.0.jar;myPath\\lib\\com\\DDLGen\\4.0\\DDLGen-4.0.jar\" com.sybase.ddlgen.DDLGenerator -UuserName -Ppassword -SconnectionString -DdatabaseName -OoutputFile";
try {
Runtime run = Runtime.getRuntime();
Process pr = run.exec(command);
pr.waitFor();
} catch (Exception e) {
//errors
}
当在其各自文件夹的路径中找到 jars(硬编码)时,此代码工作正常:myPath\lib\com
在构建项目时,此结构将发生变化,就像项目中使用的所有 jar 都将放入路径 ....myProject/repo/alljars
那么 ddlgen 应该像这样改变:
String command = "java -cp \"repo\\jconn4-4.0.jar;repo\\dsparser-4.0.jar;repo\\DDLGen-4.0.jar\"
但是,当代码使用 IDE 和构建运行时,这不是每次更改路径的正确解决方案。
我只是想要一个解决方案,无论是从IDE还是构建,都应该将这些jar文件搜索到项目路径中,然后在-cp命令中将上面给出的jar添加到类路径中,然后它应该执行ddlgen .
那么有什么办法可以达到我的要求吗?
【问题讨论】:
-
你试过 exec-maven-plugin 吗?