当前位置: 首页 > 面试题库 >

使用Maven在命令行上将依赖项下载到目录

廖永长
2023-03-14
问题内容

我需要将项目的所有传递依赖项下载到命令行上的目录, 而没有
pom.xml文件或其他脚本。理想情况下,我将可以使用一个或两个命令来执行此操作。据我所知,这至少是mvn的两步过程

  1. 将依赖项下载到本地存储库
  2. 将依赖项复制到lib目录

为了获得我运行的依赖

$ mvn org.apache.maven.plugins:maven-dependency-plugin:2.6:get -DgroupId=org.jclouds.provider -DartifactId=rackspace-cloudservers-us -Dversion=1.5.8

哪个很棒。不幸的是,目标参数对我没有帮助,因为它不会将所有可传递的依赖项放入目标中。

因此,现在我需要将该JAR文件及其所有传递依赖项复制到我的lib目录中。我知道这部分已经在StackOverflow上被问了很多遍,但是对我来说还没有任何作用。我已经尝试了以下方法。

$ mvn dependency:copy-dependencies ...
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-dependency-plugin:2.1:copy-dependencies (default-cli): Goal requires a project to execute but there is no POM in this directory

$ mvn dependency:copy ...
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-dependency-plugin:2.1:copy (default-cli): Goal requires a project to execute but there is no POM in this directory

通过阅读有关副本依赖关系和副本的文档和其他答案,我认为我可以在命令行中使用它们而无需pom.xml,但mvn似乎需要一个。我的Maven版本是ApacheMaven 3.0.4(r1232337; 2012-01-17 02:44:56-0600)。

谁能给我一个使用不带pom.xml的mvn复制传递依赖项的示例吗?

有没有更好的方法来完成我要在这里完成的工作?


问题答案:

第一条命令几乎可以满足您的需求-相关依赖项的POM。一旦有了它,就不需要再运行另一个项目POM了copy:dependencies

这是一个例子:

mvn org.apache.maven.plugins:maven-dependency-plugin:2.7:get -DgroupId=org.jclouds.provider -DartifactId=rackspace-cloudservers-us -Dversion=1.5.8 -Dtype=pom

mvn org.apache.maven.plugins:maven-dependency-plugin:2.7:copy-dependencies -f /path/to/m2/repo/org/jclouds/provider/rackspace-cloudservers-us/1.5.8/rackspace-cloudservers-us-1.5.8.pom -DoutputDirectory=/path/to/target/dir/don't/use/.

正如Everett Toews指出的那样,您可以使用的其他选项copy:dependencies来进一步优化下载的内容,例如通过添加-DexcludeTypes=test-jar以过滤掉测试JAR。



 类似资料:
  • 是否有一种方法可以让gradle像maven一样将依赖项库下载到项目目录中?我知道gradle在本地机器目录中保留了自己的缓存,但是我怎么知道我的项目将使用哪些库,特别是我在build.gradle文件中定义的库有自己的依赖关系呢?

  • 在实际使用之前,我试图从maven项目下载所有插件依赖项。 我试过跑步: 这成功地下载了它的插件及其部分依赖项。例如,对于exec插件,我得到: 但是,当您实际使用插件时,例如: 事实证明,它的依赖项尚未完全下载。 这是出乎意料的,因为根据文档,excludeTransitive属性在默认情况下为false(显式设置它没有帮助)。在我看来,它只是从定义的插件下载了一个级别的可传递依赖项。 有没有办

  • 我使用以下基本Maven命令生成了一个项目: 该项目是正确创建的,我可以测试自动生成的App类,而没有任何问题的说明: 稍后,我向POM添加了一些依赖项,获得了以下文件: 最后,为了测试起见,我修改了之前由Maven自己生成的App类: 一系列奇怪的事情发生了: > 即使在POM中指定了较新版本的依赖项,但在.m2文件夹中,下载的版本似乎较旧(例如,commons-lang3的版本为2.1和2.5

  • 我正在eclipse中建立一个项目。此项目通过命令行成功构建(所有、、)等命令都运行良好。同时在STS或Eclipse上设置此项目。我看到有些依赖项没有下载,尽管它们存在于中。但是,在maven存储库中搜索它们,并将jar下载到我的本地计算机,然后将它们添加到构建路径中,就可以在Eclipse上运行。 我们需要对eclipse做什么来确保它从存储库下载所有的依赖项。 我的POM:

  • 我有一个包含以下文件的Java项目: C:\MyProject\myPackage\MyTests.class C:\MyProject\lib\junit-platform-console-standalone-1.5.2.jar C:\MyProject\lib\other-library.jar MyTests 文件是使用 IDE 编译的,该 IDE 具有 junit-platform-co

  • 问题内容: 我创建了一个非常简单的默认应用程序,用于在Windows 7计算机上测试Eclipse Indigo / Maven v3.0.1设置。Hello World应用程序可以从Eclipse正常运行。 现在从命令行尝试进行测试。 在这一点上,我看到Maven下载了大量的依赖项。出于某种原因,尽管下载它会停滞不前,但只会部分停止。每次都不在同一时间,但是当前始终是相同的jar文件,例如… h