2016-10-10 12 views
1

私はMavenローカルリポジトリから10 GBのアーティファクトをターゲットリポジトリにコピーする必要があるMavenプロジェクトで作業します。maven-dependency-pluginでコピーする代わりにシンボリックリンクを作成する:copy-dependencies

場合によっては(テストなど)、このコピーをシンボリックリンクの作成に置き換えて、ほんの数分を節約したいと考えています。

私の質問は、maven-dependency-pluginのゴールコピー依存性をシンボリックリンクを作成するためにプラグインするかどうかを尋ねる方法ですか、それを行うことができるmavenプラグインはありますか?

+0

あなたは地元のレポへのパスを変更することができ、http://stackoverflow.com/questions/9123004/maven-is-it-possible-to-override-を参照してくださいローカルの場所のリポジトリを使用して共同利用 – Tunaki

+0

それは助けにはなりません:ステップ2)(自分のローカルリポジトリから自分のターゲットにコピーする)で、シンボリックリンクをコピーする代わりに依存関係を作成したいそれ。 –

+1

なぜですか?依存関係を持つローカルリポジトリを指すことができます。しかし、リポジトリへのシンボリックリンクが必要な場合は、自分で作成することができます。どうした? – Tunaki

答えて

0

コピー依存関係の目標は、私の知る限り、これをそのまま実行することはできません。ただし、シェルスクリプトを使用することができます。

#!/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 
関連する問題