使用maven-dependency-plugin创建符号链接而不是复制:copy-dependencies

时间:2016-10-10 08:59:54

标签: maven-dependency-plugin

我在Maven项目上工作,该项目需要从maven本地存储库(下载后)复制目标存储库中10 GB工件的模式。

在某些情况下(例如测试),我想通过创建符号链接来替换此副本,以便节省几分钟。

我的问题是:有没有办法要求插件maven-dependency-plugin目标副本依赖项来创建符号链接或者是否有任何可以执行此操作的maven插件。

1 个答案:

答案 0 :(得分:1)

据我所知,复制依赖性目标不能开箱即用。但是,您可以使用shell脚本:

#!/bin/sh
outputDir=target/dependency
mkdir -p "$outputDir"
mvn dependency:resolve |
  grep ':\(compile\|runtime\)' | sed 's/\[INFO\] *//' |
while read gav
do
  case "$gav" in
    *:*:*:*:*:*) # G:A:P:C:V:S
      g="${gav%%:*}"; remain="${gav#*:}"
      a="${remain%%:*}"; remain="${remain#*:}"
      p="${remain%%:*}"; remain="${remain#*:}"
      c="${remain%%:*}"; remain="${remain#*:}"
      v="${remain%%:*}"
      s="${remain#*:}"
      ;;
    *:*:*:*:*) # G:A:P:V:S
      g="${gav%%:*}"; remain="${gav#*:}"
      a="${remain%%:*}"; remain="${remain#*:}"
      p="${remain%%:*}"; remain="${remain#*:}"
      c=""
      v="${remain%%:*}"
      s="${remain#*:}"
      ;;
  esac
  g=$(echo "$g" | sed 's/\./\//g')
  test -n "$c" && artName="$a-$v-$c" || artName="$a-$v"
  ln -s "$HOME/.m2/repository/$g/$a/$v/$artName.$p" "$outputDir"
done