从maven

时间:2015-07-06 17:39:33

标签: java maven opensaml

我对Maven真的很陌生,我在网上寻找解决方案的最后4个小时读到了它,但我无法弄清楚如何解决这个问题:

我需要下载这个由许多.jar组成的库 https://build.shibboleth.net/nexus/content/repositories/releases/org/opensaml/

在所有opensaml- * dirs

中,所有内容都在目录3.1.1中

这个项目基于Maven并且有一个父母pom https://build.shibboleth.net/nexus/content/repositories/releases/org/opensaml/opensaml-parent/3.1.1/opensaml-parent-3.1.1.pom 并且每个子模块在所有3.1.1目录中都有另一个pom文件,具有dependacies。 好的问题很简单,我想在3.1版本的父pom中列出的每个模块的每个目录下载每个jar(如果你查看链接,问题会变得更加容易)。

好吧,在maven中有一种方法可以下载所有指定版本和指向repo / pom /的链接以及任何和解析dependacies? (我认为maven就是这样的事情)

非常感谢。

1 个答案:

答案 0 :(得分:0)

好的,OpenSaml 3.2.0现在正常运行。这有点棘手。 基本上你需要从svn repo下载所有模块,然后从 -parent目录构建所有模块。那么你需要告诉maven使用mvn依赖来下载alla dependacy:copy-dependencies(再次在-parent中)。然后从-opensaml - 以及target / dependacy复制所有罐子。然后会工作:)

对于感兴趣的人我分享一点点bash来帮助你收集所有这些罐子。只需在mvn依赖之后进入java-opensaml目录:copy-dependencies步骤,只需:

#!/bin/bash

for d in ./trunk/*/ ; do
#echo "$d"
k=$d'target/';
printf "Checking $k ...";
if [ -d "$k" ]; then
   printf "EXIST\n";
   find $k -iname "*SNAPSHOT.jar" -exec cp --remove-destination -v {} ./ \;
else
printf "fail\n";
fi

k=$d'target/dependency/';
printf "Checking $k ...";
if [ -d "$k" ]; then
   printf "EXIST\n";
   find $k -iname "*.jar" -exec cp --remove-destination -v {} ./ \;
else
printf "fail\n";
fi
printf "\n--\n";
done