基于maven构建生成CLASSPATH字符串

时间:2017-09-20 10:51:37

标签: java maven sh classpath

我的pom.xml中有依赖项,如下所示:

<dependency>3.jar</dependency>
<dependency>1.jar</dependency>
<dependency>4.jar</dependency>
<dependency>2.jar</dependency>

我有一个maven项目,在部署时,会有一个像这样的目录结构:

myproj/
|_lib/
  |_1.jar
  |_2.jar
  |_3.jar
  |_4.jar
|_start.sh

start.sh加载lib文件夹中的所有jar,如下所示:

CLASSPATH=./lib/*

问题是,当我回显CLASSPATH时,它会按字母顺序加载jar:

CLASSPATH=/lib/1.jar;/lib/2.jar;/lib/3.jar;/lib/4.jar;

我希望它成为maven使用的:

CLASSPATH=/lib/3.jar;/lib/1.jar;/lib/4.jar;/lib/2.jar;

我能做到

mvn dependency:build-classpath -Dmdep.outputFile=cp.txt

但它打印出我本地存储库中的jar:

CLASSPATH=C:\.m2\repository\com\project\3.jar;\.m2\repository\com\project\1.jar;...

我想我可以修改生成的输出,但我正在寻找更好的解决方案。

有什么想法吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

您可以使用prefix参数dependency:build。来自the docs

  

前缀

     

前缀在每个依赖工件上。如果未定义,则路径引用本地存储库中的实际文件存储(stripVersion参数不执行任何操作)。

     

用户属性是:mdep.prefix。

例如:

mvn dependency:build-classpath -Dmdep.outputFile=cp.txt -Dmdep.prefix=/lib