Maven:添加依赖到POM后更新仓库的命令

376

我已经在我的POM文件中添加了一个新的依赖。

是否有一个简单的命令可以运行来将该依赖项下载到我的存储库中?


对于那些想在Spring Boot项目中实现此操作的人:使用mvnw调用包装层。此页面上的命令与其兼容。 - G_V
@G_V 你能详细说明一下吗?我们如何使用mvnw来添加依赖项? - undefined
5个回答

828

如果你只想下载依赖而不做其他操作,那么可以使用以下命令:

mvn dependency:resolve

或者下载单个依赖项:

mvn dependency:get -Dartifact=groupId:artifactId:version

如果您需要从特定的存储库下载,可以使用 -DrepoUrl=... 指定。


2
当我运行该命令时,出现以下错误:[ERROR] Failed to execute goal org.apache.maven.plugins:maven-dependency-plugin:2.1:get (default-cli) on project standalone-pom: The parameters 'repositoryUrl' for goal org.apache.maven.plugins:maven-dependency-plugin:2.1:get are missing or invalid -> [Help 1]. 指定-DrepositoryUrl=...无效。 - Chry Cheng
1
我认为我已经找到了解决方案。参数应该是“repoUrl”,而不是“repositoryUrl”。 - Chry Cheng
1
对我来说并没有解决问题:在我运行 mvn package -o 之后,我会得到插件无法下载的错误。运行 mvn dependency:resolve-plugins 也不能完全解决这个问题。 - Innokenty
你的代码库URL可能缺失或错误。无论如何,我认为这个答案并不是解决你遇到的问题的答案。这个答案适用于当Maven能够在配置的代码库中找到所有需要的构件的情况。 - Andrew Spencer
如果你需要答案,不妨把这个问题作为一个高级问题来询问。 - Andrew Spencer
显示剩余2条评论

247

mvn install(或mvn package)始终可行。

您可以使用mvn compile下载编译时依赖项,或者使用mvn test下载编译时和测试依赖项,但我更喜欢一些始终可行的东西。


2
谢谢,我也发现在STS的pom文件中添加它会自动为您下载它。 - DJ180
26
@Andrew Spencer的回答更准确—— mvn dependency:xxx 仅处理依赖项,不做任何其他操作——这正是问题所涉及的内容。 - botchniaque
1
有时候,“mvn package”可能无法更新依赖项。这种情况发生过不止一次。在这种情况下,需要运行“mvn dependency:resolve”。 - Binita Bharati
1
@BinitaBharati,你可以在Maven命令行中添加-U来强制下载依赖项。如果由于缓存超时而导致Maven无法下载更新的依赖项,则此功能非常有用。 - BamaPookie
1
@Kishan 提出一个新问题。展示你的项目布局(特别是 import 发生的地方)以及是否使用多模块构建。 - Aaron Digulla
显示剩余2条评论

13

我知道这已经是一个老问题了,但对于在Windows下使用Eclipse的用户来说,如果他们正在使用Maven插件,有两个选择:

  1. 如果你已经安装了独立的Maven应用程序:

    你可以在项目路径下的CMD中使用以下命令:

mvn eclipse:eclipse

它将根据你在pom.xml文件中的依赖关系,使用所有缺失的JAR文件更新你的仓库。

  • 如果你没有独立安装Maven应用程序,你可以在Eclipse上按照以下步骤操作:

    右键单击项目->运行为--> 运行配置

    然后选择mavenBuild

    接着点击新建按钮创建所选类型的配置。点击浏览工作区,然后选择你的项目,在目标中指定eclipse:eclipse

  • 你可以参考如何运行mvn eclipse:eclipse命令了解更多细节。


    3
    在使用dependency:resolve命令后运行eclipse:eclipse,帮助我在eclipse中查看已下载的jar包,谢谢! - Anatoly Yakimchuk
    2
    虽然这个答案可以帮助那些被Eclipse困住的可怜人,但我强烈建议任何使用Eclipse的人寻找更好的替代方案。特别是如果你将要使用Maven。Netbeans和IntelliJ要先进得多。 - 64BitBob
    @64BitBob 假设Netbeans和IntelliJ比eclipse更好,我们应该为那些使用它的人提供解决方案。 :) - cнŝdk
    我发现插件在市场上已经不可用了,但是它可以在Eclipse 2020中工作,无需下载任何东西。我想知道当我们右键单击->Maven->更新项目时,mvn eclipse:eclipse是否是由Eclipse本身发送的命令。 - Paolo
    在我看来,他们已经在新版本的Eclipse中自动添加了插件,而且我认为这是“更新项目”选项背后的相同命令。@Paolo - cнŝdk
    2023年,我认为使用eclipse:eclipse是一个非常糟糕的建议。如果你只是将项目导入为“现有的Maven项目”,一切都应该可以顺利运行。 - undefined

    -1

    注意你的依赖范围 我遇到了一个问题,当我通过Intellij调用clean compile时,pom会被下载,但是jar不会被下载。这时会创建一个xxx.jar.lastUpdated文件。后来发现依赖范围是测试,但我正在触发编译。我删除了repos,并触发mvn test,问题得到解决。


    -7

    在项目上右键点击。 转到Maven -> 更新项目。

    依赖项将自动安装。


    这是在Eclipse中如何做到的。 - user1364368
    有时候,这是最终的结果,不要放弃。一些命令,如mvn package、install、dependency:resolve可以解决你的问题。 - Sham Fiorin

    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接