在Maven中添加依赖项


134

如何获取我拥有的jar文件并将其添加到Maven 2的依赖系统中?我将成为此依赖项的维护者,我的代码需要在类路径中使用此jar,以便对其进行编译。

Answers:


139

您必须分两步执行此操作:

1.给您的JAR一个groupId,artifactId和版本,然后将其添加到您的存储库中。

如果没有内部存储库,而您只是想将JAR添加到本地存储库,则可以使用任意groupId / artifactIds如下安装它:

mvn install:install-file -DgroupId=com.stackoverflow... -DartifactId=yourartifactid... -Dversion=1.0 -Dpackaging=jar -Dfile=/path/to/jarfile

您也可以将其部署到内部存储库中,并希望将其提供给组织中的其他开发人员。我只是使用存储库的基于Web的界面来添加工件,但是您应该可以使用完成相同的操作mvn deploy:deploy-file ...

2.更新相关项目以引用此JAR。

然后通过将以下内容添加到使用JAR的项目的pom.xml中,更新依赖项:

<dependencies>
    ...
    <dependency>
        <groupId>com.stackoverflow...</groupId>
        <artifactId>artifactId...</artifactId>
        <version>1.0</version>
    </dependency>
    ...
</dependencies>

3
您可以添加有关部署的更多详细信息吗?我们有一个内部存储库,我想将本地jar安装文件部署到该存储库,以便其他开发人员和我们的构建服务器也可以获取该jar。
Kieveli 2009年

这个答案应该很喜欢!我已经使用它为Google App Engine和Heroku上的maven项目成功添加了依赖项。
Leo C Han

93

您还可以指定不在Maven存储库中的依赖项。当团队中没有中央Maven存储库或拥有CI服务器时,此功能可能非常有用

    <dependency>
        <groupId>com.stackoverflow</groupId>
        <artifactId>commons-utils</artifactId>
        <version>1.3</version>
        <scope>system</scope>
        <systemPath>${basedir}/lib/commons-utils.jar</systemPath>
    </dependency>

4
我可以依赖另一个pom文件而不是jar吗?
Jayen

45

实际上,在调查这一问题时,我认为所有这些答案都是错误的。由于我们对的理解水平,您的问题具有误导性maven。我说我们是因为我刚被介绍maven

在中Eclipse,当您要将jar文件添加到项目中时,通常可以手动下载jar,然后将其放到lib目录中。使用Maven,您不必这样做。这是您的工作:

  • 转到mvnrepository
  • 搜索您要添加的库
  • 将对dependency帐单复制到pom.xml
  • 通过重建 mvn

现在,maven将连接并下载jar依赖项列表,并自动解决jar可能具有的任何其他依赖项。因此,如果jar还需要公共日志,则也将下载该日志。


5
我正在使用Spring Tool Suite(基于Eclipse构建)。完成上述解决方案的步骤1和2之后:1.在STS编辑器中打开pom.xml,单击底部的“依赖项”选项卡。2.在依赖项组中单击“添加”。3.从浏览器窗口中复制/粘贴“ Maven”选项卡的依赖项信息(将groupId,artifactId,版本)放入STS 4中“选择依赖项”弹出窗口的相应字段中。单击“确定”。5.保存pom.xml保存后,我的硬盘驱动器上的maven目录和STS中的maven依赖项设置将在几秒钟内更新。您可以直接编辑.xml,但是使用该工具可能有助于避免xml格式问题。
克里斯·R

2
确实,这是首选的处理方式,但是在某些情况下您无法执行此操作(例如,专有的jar不在mvnrepository上)。在这种情况下,您将需要一种“手动”添加它的方法,在这种情况下,另一个答案将是解决方案。
Thunderforge 2014年

提出的问题也可能不是初学者的问题。我为那些想要做一些事情而又没有适当的措辞的人提供这些信息,而这些措辞是花在与Maven合作上的时间。(与我当时一样)
Kieveli 2014年

吻,谢谢,我读到这是Java中的C#Nuget等效项,但我试图找出要单击的按钮或要运行的cmd。不完全是1:1,但是可以完成工作。
Terrance

如何在intelleJ中的Maven中重建项目?
Irfan Nasim 2015年

14

我会这样做:

  1. 根据需要在pom中添加依赖项:

    <dependency>
            <groupId>com.stackoverflow...</groupId>
            <artifactId>artifactId...</artifactId>
            <version>1.0</version>
    </dependency>

  2. 运行mvn install它将尝试下载jar并失败。在此过程中,它将为您提供安装带有错误消息的jar的完整命令。复制该命令并运行它!容易吗?


3

我假设您要问的是如何将依赖关系推送到“知名存储库”,而不仅仅是问如何更新POM。

如果是,那么就是您要阅读的内容。

对于希望建立内部存储库服务器的任何人,请看这里(使用Maven 2的一半问题正在查找文档)


我想自己维持一个依靠。这是一个内部图书馆。
Milhous
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.