リモートmaven2アーティファクトをローカルリポジトリにダウンロードする簡単なコマンドライン


122

私はmaven 2を使用して配布するライブラリーを持っています。このライブラリーの一般的なユーザーは、アプリケーションの構築にmavenを使用していませんが、mavenに多少慣れており、おそらくインストールされています。

私がライブラリのアーティファクトをローカルにダウンロードするために使用できる「シンプルな」1行のコマンドをドキュメント化したいのですが~/.m2/repository、pom.xmlを設定する必要はありません。

これを行う方法はあると思いましたが、install:install-fileおよびdependencyプラグインのドキュメントを調べても見つけられないようです。私は次のようなことを試しました:

mvn install:install-file -DrepositoryId=java.net -Durl=http://download.java.net/maven/2/ -Dfile=robo-guice-0.4-20091121.174618-1.jar -DpomFile=robo-guice-0.4-20091121.174618-1.pom -DgroupId=robo-guice -DartifactId=robo-guice -Dversion=0.4-SNAPSHOT -Dpackaging=jar

しかし、ローカルのリポジトリにリモートのアーティファクトをダウンロードするのではなく、ローカルに構築されたファイルをローカルのリポジトリにコピーするためにインストールプラグインが使用されているようです。

これは私がインストールしたいアーティファクトです:http : //download.java.net/maven/2/robo-guice/robo-guice/0.4-SNAPSHOT/

これはMavenを使用して可能ですか?



回答:


168

バージョン2.1以来Mavenの依存関係のプラグインがあり、依存関係は:取得、この目的のためにゴールを決めました。正しいバージョンのプラグインを使用していることを確認するには、「完全修飾名」を使用する必要があります。

mvn org.apache.maven.plugins:maven-dependency-plugin:2.1:get \
    -DrepoUrl = http://download.java.net/maven/2/ \
    -Dartifact = robo-guice:robo-guice:0.4-SNAPSHOT

依存関係プラグイン自体をインストールする方法を示すのに非常に役立ちます。
セルジオアコスタ

2
Pascal、リポジトリに到達するためにユーザーとパスワードを定義する方法を教えてもらえますか?user:password @ repourlのトリックは機能しませんでした。
ガーボルLipták

4
目標はいいですが、ファイルのコピー先となるターゲットディレクトリを定義するにはどうすればよいですか?(およびファイル名)
domi

9
@domi(後世の遅れた答え):「-Ddest = path / to / my.jar」を使用します。それ以外の場合は、ローカルの〜/ .m2 / repositoryにコピーされます(何も起こらなかったように見えます)。maven.apache.org/plugins/maven-dependency-plugin/…= example =>を参照してくださいmvn org.apache.maven.plugins:maven-dependency-plugin:2.5.1:get -DremoteRepositories = repo.maven.apache.org -Dartifact = org.apache.ant:ant:1.8.1 -Ddest = ant-1.8.1.jar(結果:現在のディレクトリのant-1.8.1.jar)
マイケル

3
ありがとう!一方、あなたが投稿したドキュメントリンクにはDeprecated. Use remoteRepositoriesforがありrepoUrlます。答えを多分更新してください:)
週末

46

依存関係および実行手順としてリストされたこれらのjarを使用して、簡単なpomを提供します。

mvn dependency:go-offline

これにより、依存関係がローカルリポジトリにプルされます。

より直接的な解決策はdependency:getですが、入力するには多くの引数があります。

mvn dependency:get -DrepoUrl=something -Dartifact=group:artifact:version

良いアイデアは、けれども彼らは、コピー&ペーストができコマンドラインは容易になるだろう
emmby

思いつくと投稿します。求められていることを実行するプラグインを知りません。私はそれを書く方法を知っています...
bmargulies

getモジョは実際に期待し-DrepoUrl、存在することがありません-DrepositoryUrl。タイプの引数に関しては、魔法はありません。これらの情報を何らかの方法で提供する必要があります。
Pascal Thivent 2009年

最初のスキームでは、エンドユーザーはmvnという3文字のみを入力します。他のすべてのタイピングはopによって行われます。
bmargulies 2009年

22

Maven依存関係プラグインのバージョン2.4以降では、-Ddestフラグを使用してアーティファクトのターゲット宛先を定義することもできます。宛先アーティファクトのファイル名(ディレクトリではない)を指す必要があります。使用できる追加のパラメーターについては、パラメーターのページを参照してください

mvn org.apache.maven.plugins:maven-dependency-plugin:2.4:get \
    -DremoteRepositories=http://download.java.net/maven/2 \
    -Dartifact=robo-guice:robo-guice:0.4-SNAPSHOT \
    -Ddest=c:\temp\robo-guice.jar

2
ありがとう!-Ddestは非推奨としてマークされています。新しいソリューションはありますか?
Dimath 2016年

1
代わりにdependency:copyゴールを使用してください。 maven.apache.org/plugins/maven-dependency-plugin/copy-mojo.html
エリックB.

3
コピー目標は、推移的依存をコピーしません。
Renato
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.