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

如果这对您来说是一次性或不定期发生的,最简单的做法是在 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

3)使用下载的pom通过dependency:copy-dependency监狱复制所有依赖项

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

您将在创建的文件夹中找到依赖项(包括testoptional范围!) 。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 回答