繁体   English   中英

如何在Maven中添加jar依赖项?

[英]how to add jar dependency in maven?

当我跑步

mvn compile

我得到的package com.ibm.icu.util does not exist 因此,我下载了ICU4J jar,并将其安装到本地存储库中。 我确认它在.m2/repository/com/ibm/icu/icu4j/3.4.4/icu4j-3.4.4.jar 该jar文件中缺少类文件com/ibm/icu/util/Calendar.class 然后,将以下内容添加到pom.xml的依赖项部分:

<dependency>
   <groupId>com.ibm.icu</groupId>
   <artifactId>icu4j</artifactId>
   <version>3.4.4</version>
</dependency>

但是当我再次运行mvn compile时,我得到了同样的错误。 我究竟做错了什么?

您应该避免手动添加依赖项。

如果您不知道所需依赖项的groupId和artifactId,请在http://mvnrepository.com/上进行搜索。 通常,groupId与jar文件中的软件包名称匹配。

对于您的情况,依赖项已经存在: http : //mvnrepository.com/search?q=com.ibm.icu因此,请转到http://mvnrepository.com/artifact/com.ibm.icu/icu4j并获取您需要的依赖项版本,例如55.1: http : //mvnrepository.com/artifact/com.ibm.icu/icu4j/55.1抓住maven依赖项xml并将其放入您的pom.xml文件:

<dependency>
    <groupId>com.ibm.icu</groupId>
    <artifactId>icu4j</artifactId>
    <version>55.1</version>
</dependency>

如果找不到您的依赖项,请尝试在Google中找到它。 有时,在某些公司公共存储库中(而不是在central存储库中)可以找到这种依赖关系。 在这种情况下,您需要将第三方存储库添加到pom.xml的“ 存储库”部分


如果无法在公共存储库中找到依赖项,则可以使用以下三种选择:

A.将jar安装到内部存储库服务器(例如nexus)

B.将JAR文件放入您的项目源中并声明项目maven存储库

<repositories>
    <repository>
        <id>my-local-repo</id>
        <url>file://${basedir}/my-repo</url>
    </repository>
</repositories>

重要说明:您应该将Maven存储库布局保留在本地存储库中。

C. [错误做法]使用maven install插件将自定义jar安装到计算机上的本地存储库。 但这很不好,不推荐。

mvn org.apache.maven.plugins:maven-install-plugin:2.5.2:install-file -Dfile=path-to-your-artifact-jar -DpomFile=path-to-pom

D. [错误的做法]使用系统依赖项和JAR文件的绝对路径,尽管这是一个不好的做法,应避免使用。

<dependency>
  <groupId>test</groupId>
  <artifactId>test</artifactId>
  <version>X.Y.Z</version>
  <scope>system</scope>
  <systemPath>${user.home}/jars/my.jar</systemPath>
</dependency>

您不应该手动将内容安装到Maven存储库目录中。 该目录由maven自己维护。

依赖项的工作方式是,当您运行mvn compile或其他目标时,它将连接到maven中央存储库并下载所需的依赖项及其依赖项。

如果您手动安装jar文件,则它可能没有依赖关系。 该ICU工件可能还取决于其他因素。 Maven将自动解决这些依赖关系。

我建议使用mvn clean install这将清理目标目录并重建所有内容。

如果下载失败,则可能需要更改Maven配置。 例如,如果您位于代理服务器后面,则需要使用代理凭据配置Maven。

另外,如果您手动将任何内容复制到.m2 / repository /目录,则应将其删除,然后让maven正确地将其放置在该目录中。

Maven的优点在于您无需担心下载jars之类的事情。 它只是为您处理。 让它完成工作。

如果您有内部伪像,例如JFrog,则应检查该罐子是否在其中。 不要手动下载到.m2,因为它至少很奇怪。 您最多可以手动将罐子上传到该工件中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM