【问题标题】:How do I download a Maven artifact at the command line without using dependency:get or maven-download-plugin?如何在不使用依赖项的情况下在命令行下载 Maven 工件:get 或 maven-download-plugin?
【发布时间】:2012-07-01 01:09:59
【问题描述】:

我想在命令行下载一个工件及其依赖项。即

mvn [some plugin]:[goal] -DartifactId=[artifactId] -DgroupId=[groupId] -Dversion=[version]

我已经尝试过 mvn dependency:get 但这似乎需要一个远程存储库列表。我希望 mvn 使用 settings.xml 中已经指定的内容

我也尝试过maven-download-plugin,但这似乎不能正常工作(它尝试下载 xerces-impl 作为 ant 的传递依赖项但未能解决它。xerces-impl 和 ant 都不是我的依赖项神器)。

您的帮助将不胜感激。

【问题讨论】:

    标签: maven maven-plugin maven-3


    【解决方案1】:

    这是我使用的方法,符合您的需要,但打字和脑细胞消耗更少:

    curl https://start.spring.io/starter.tgz | tar -xzvf -

    (顺便说一句,你可以添加-d dependencies=lombok 当您想要的依赖项列在starter 上时,例如 lombok。)

    然后,在vim pom.xml 中,删除任何父项并修改依赖项之间的所有内容。 您只需要填写组、工件和版本。

    最后,mvn package。它开始下载...

    【讨论】:

      【解决方案2】:

      将 TestNG 6.9.4 版本下载到本地 ~/.m2/repository 的示例(使用 maven-dependency-plugin:get):

      mvn org.apache.maven.plugins:maven-dependency-plugin:RELEASE:get \
      -Dartifact=org.testng:testng:6.9.4:jar
      

      将 JUnit 4.11 版下载到当前工作目录的示例(使用 maven-dependency-plugin:copy):

      mvn org.apache.maven.plugins:maven-dependency-plugin:RELEASE:copy \
      -Dartifact=junit:junit:4.11:jar
      

      【讨论】:

        【解决方案3】:

        copy 目标在这里更合适,它还允许您指定输出目录(在 get 目标中已弃用):

        mvn org.apache.maven.plugins:maven-dependency-plugin:2.8:copy -Dartifact=groupId:artifactId:version[:packaging][:classifier] -DoutputDirectory=[target] -Dmdep.useBaseVersion=true

        mdep.useBaseVersion=true 将从快照构建中删除时间戳。

        【讨论】:

          【解决方案4】:

          尝试使用最新版本的依赖:get,它对我有用

          mvn org.apache.maven.plugins:maven-dependency-plugin:2.4:get -DartifactId=[artifactId] -DgroupId=[groupId] -Dversion=[version]
          

          为我工作

          【讨论】:

          • 谢谢伙计。看起来本地 repo 填充了 deps 并且命名的工件保存到指定的 -Ddest=[file]
          • 如果您需要将已解析的工件复制到本地 maven 存储库 (~/.m2/repository) 之外的某个位置,请使用 maven-dependency-plugin:copy 目标而不是 maven-dependency-plugin:获取(已弃用)源:maven.apache.org/plugins/maven-dependency-plugin/…
          • 迂腐点,但是要使用最新版本,指定LATEST,而不是具体版本;例如mvn org.apache.maven.plugins:maven-dependency-plugin:LATEST:get
          【解决方案5】:

          最简单的解决方案是创建一个具有适当依赖项的简单 pom 并在该迷你项目上执行 mvn clean package...

          【讨论】:

          • 谢谢,但我想在单个命令中执行下载,以包含在脚本中。
          • 如果你有一个脚本,只需通过脚本生成 pom 并调用 mvn -f generate-pom.xml 就可以了?
          • 谢谢,如果没有更简单的解决方案,我可能会考虑这样做
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2019-08-12
          • 2014-09-24
          • 1970-01-01
          • 2013-03-05
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多