7

特定のアーティファクト (およびそのすべての依存関係) をマシンのローカル リポジトリにダウンロードしようとしています。

これには、dependency:get ゴールを使用するのが最適なオプションのように思われますが、ドキュメントにもかかわらず、実際には推移的な依存関係を取得していないようです。

dependency:getこれは、spring-core jar とその多くの依存関係すべてをダウンロードするために使用しようとした例です。ローカル リポジトリを消去した後にダウンロードされたにもかかわらず、ダウンロードされたのは spring-core jar だけであることがわかります。

$ mvn org.apache.maven.plugins:maven-dependency-plugin:2.2:get -DrepoUrl=http://repo1.maven.org/maven2/ -Dartifact=org.springframework:spring-core:3.0.5.RELEASE -Dtransitive=true
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building Maven Stub Project (No POM) 1
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-dependency-plugin:2.2:get (default-cli) @ standalone-pom ---
Downloading: http://repo1.maven.org/maven2/org/springframework/spring-core/3.0.5.RELEASE/spring-core-3.0.5.RELEASE.jar
Downloaded: http://repo1.maven.org/maven2/org/springframework/spring-core/3.0.5.RELEASE/spring-core-3.0.5.RELEASE.jar (374 KB at 548.4 KB/sec)
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 4.401s
[INFO] Finished at: Wed May 25 00:29:47 CDT 2011
[INFO] Final Memory: 7M/107M
[INFO] ------------------------------------------------------------------------



私の質問は次のとおりです。

  1. dependency:getこれは目標のバグですか?
  2. そうでない場合、私は何を間違っていますか?
  3. 最初に述べた目標を達成するために使用できる代替方法はありますか?
4

3 に答える 3

7

これが1回限りまたは不規則に発生する場合、最も簡単な方法は、POMで依存関係を定義し、実行するmvn packageか、同様に依存関係アーティファクトを取得することです。mvn dependency:sourcesソースjarも必要な場合は、試してみることもできます。

これをより定期的に、またはプロセスの一部として実行したい場合は、Aetherを直接使用して依存関係を取得することを検討できます。

これがアーティファクトのグループを内部開発エコシステムに管理するために定期的に行う必要がある場合の別のアプローチは、Nexusの調達スイートを使用して依存関係を取得し、それらをリポジトリに管理することです。

于 2011-05-25T14:51:46.247 に答える
4

あなたはこの解決策で行くことができます

1)説明したようにアーティファクトをダウンロードします(バージョン2.5.2でテストしました)

c:\test>mvn -DrepoUrl=http://repo1.maven.org/maven2/ -Dartifact=org.springframework:spring-core:2.5.2 -Dtransitive=true

-Dpackaging=pom2)このアーティファクトの pom ( ) をダウンロードします

c:\test>mvn -DrepoUrl=http://repo1.maven.org/maven2/ -Dartifact=org.springframework:spring-core:2.5.2 -Dtransitive=true -Dpackaging=pom org.apache.maven.plugins:maven-dependency-plugin:2.2:get

dependency:copy-dependency3) ダウンロードした pom を使用して、 gaol経由ですべての依存関係をコピーします。

c:\test>mvn -DoutputDirectory=C:/test/dependency -f C:/<path-to-repository>/org/springframework/spring-core/2.5.2/spring-core-2.5.2.pom dependency:copy-dependencies

作成されたフォルダーに依存関係 (testおよびoptionalスコープを含む) があります。c:\test\dependencyテストとオプションのスコープを除外するには、 を使用します-DincludeScope=runtime

このソリューションをセットアップするには、いくつかのパス情報 (リポジトリ内の pom へのパスなど) を動的に構築する必要があり、アーティファクト自体をその依存関係と一緒にする必要もありますが、特別な pom を生成せずにスクリプトで動作する必要があります (もっと簡単に)。

于 2011-05-26T14:03:59.780 に答える
3

質問 1 (これは依存関係: get ゴールのバグですか?) に対する答えはイエスのようです。2011 年 5 月 25 日現在、問題MDEP-308は未解決のままです。

于 2011-05-25T14:41:15.580 に答える