【问题标题】:Create symlinks instead of copy with maven-dependency-plugin : copy-dependencies使用 maven-dependency-plugin 创建符号链接而不是复制:copy-dependencies
【发布时间】:2016-10-10 08:59:53
【问题描述】:

我从事一个 Maven 项目,该项目需要从 Maven 本地存储库(下载后)复制目标存储库中超过 10 GB 的工件。

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

我的问题是:有没有办法要求插件 maven-dependency-plugin 目标复制依赖项来创建符号链接,或者是否有任何 maven 插件可以做到这一点。

【问题讨论】:

  • 可以更改本地repo的路径,见stackoverflow.com/questions/9123004/…
  • 它对我没有帮助:在第 2 步中)(从我的本地仓库复制到我的目标)我想创建一个符号链接做依赖而不是复制它。
  • 为什么?您可以指向具有依赖项的本地存储库。但是如果你想要一个指向 repo 的符号链接,你可以自己创建。有什么问题?
  • 我犯了一个错误:我想创建一个以插件 'maven-dependency-plugin' 的目标 'copy-dependencies' 为目标的符号链接。我会改写
  • 你为什么要复制所有这些数据?

标签: maven-dependency-plugin


【解决方案1】:

据我所知,copy-dependencies 目标不能开箱即用。但是,您可以使用 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

【讨论】:

    猜你喜欢
    • 2012-02-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-29
    • 1970-01-01
    • 1970-01-01
    • 2014-04-01
    • 1970-01-01
    • 2017-05-30
    相关资源
    最近更新 更多