一行 bash 命令,用于将 pom 的 Maven 工件下载到指定的库
One line bash command for downloading Maven artifacts for a pom to a specified lib
据我所知:
mvn dependency:tree | grep ":compile" | sed 's/+//' | sed 's/-//' | sed 's/\//' | sed 's/\|//g' | sed 's/ //g' | sed 's/:jar:/:/'| sed 's/:compile//' | sed 's/:/,/g' | sed 's/\[INFO\]//'
是的,它很简陋。我在想那里有一个 'cut' 用法,也许 awk 为 http://central.maven.org/maven2/com/thoughtworks/xstream/xstream/1.4/xstream-1.4.jar
构造了一个 curl/wget 行,但我的 Bash fu 不在那里。
显然接下来的 curl/wget 位是简单的位,因为所有的管道都在进行中。只是遥不可及的URL构造
这就是我所拥有的(所以你不必了解 Maven):
com.thoughtworks.xstream,xstream,1.4
所以我不能按照要求用 oneliner 来做,但是一个小的 Python 脚本符合要求:
# pip3 install sh
from sh import mvn, grep, rm, mkdir, sed, wget
import csv
rm("-rf", "libs")
mkdir("libs")
tree = sed(sed(mvn("dependency:tree", _tty_out=False), "s/\[INFO\]//"), "/\[WARNING\]/d")
lines = sed(sed(sed(sed(sed(sed(sed(sed(tree, "s/+//"), "s/-//"), "s/\\//"), "s/\|//g"), "s/ //g"), "s/:jar:/:/"), "s/:/,/g"), "s/\[INFO\]//")
for gav in csv.reader(lines):
if (len(gav) is not 4):
continue
mkdir("-p", "libs/" + gav[3])
try:
wget("http://central.maven.org/maven2/" + gav[0].replace(".", "/") + "/" + gav[1] + "/" + gav[2] + "/" + gav[1] + "-" + gav[2] + ".jar", "-O", "libs/" + gav[3] + "/" + gav[1] + "-" + gav[2] + ".jar")
except:
pass
在 https://github.com/paul-hammant/spring-jetty-integrationtest-ant-example/blob/master/mavdl.py
(演示项目)
中用于愤怒
编辑:有人告诉我,Maven Resolver 也有 Ant 功能:https://maven.apache.org/resolver-archives/resolver-ant-tasks-LATEST/
据我所知:
mvn dependency:tree | grep ":compile" | sed 's/+//' | sed 's/-//' | sed 's/\//' | sed 's/\|//g' | sed 's/ //g' | sed 's/:jar:/:/'| sed 's/:compile//' | sed 's/:/,/g' | sed 's/\[INFO\]//'
是的,它很简陋。我在想那里有一个 'cut' 用法,也许 awk 为 http://central.maven.org/maven2/com/thoughtworks/xstream/xstream/1.4/xstream-1.4.jar
构造了一个 curl/wget 行,但我的 Bash fu 不在那里。
显然接下来的 curl/wget 位是简单的位,因为所有的管道都在进行中。只是遥不可及的URL构造
这就是我所拥有的(所以你不必了解 Maven):
com.thoughtworks.xstream,xstream,1.4
所以我不能按照要求用 oneliner 来做,但是一个小的 Python 脚本符合要求:
# pip3 install sh
from sh import mvn, grep, rm, mkdir, sed, wget
import csv
rm("-rf", "libs")
mkdir("libs")
tree = sed(sed(mvn("dependency:tree", _tty_out=False), "s/\[INFO\]//"), "/\[WARNING\]/d")
lines = sed(sed(sed(sed(sed(sed(sed(sed(tree, "s/+//"), "s/-//"), "s/\\//"), "s/\|//g"), "s/ //g"), "s/:jar:/:/"), "s/:/,/g"), "s/\[INFO\]//")
for gav in csv.reader(lines):
if (len(gav) is not 4):
continue
mkdir("-p", "libs/" + gav[3])
try:
wget("http://central.maven.org/maven2/" + gav[0].replace(".", "/") + "/" + gav[1] + "/" + gav[2] + "/" + gav[1] + "-" + gav[2] + ".jar", "-O", "libs/" + gav[3] + "/" + gav[1] + "-" + gav[2] + ".jar")
except:
pass
在 https://github.com/paul-hammant/spring-jetty-integrationtest-ant-example/blob/master/mavdl.py
(演示项目)
编辑:有人告诉我,Maven Resolver 也有 Ant 功能:https://maven.apache.org/resolver-archives/resolver-ant-tasks-LATEST/