2017-09-20 39 views
1

我在我的pom.xml依赖这样的CLASSPATH字符串:基于Maven构建

<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 ,它加载的罐子按字母顺序:

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 

但它打印出的瓶子在我的本地库:

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

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

任何想法?

谢谢!

+0

“*它装入罐子按字母顺序*” - 这是为什么有问题?除非你有不同的JAR文件相同的类(你不应该)在classpath中的jar文件的顺序并不重要 –

+0

其实这就是问题所在 - 在不同的罐子同一类。由于罐子是专有的,我除了订购类路径之外别无选择。 – racumin

回答

1

可以使用prefix参数dependency:build。从the docs

前缀

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

用户属性是:mdep.prefix。

例如:

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