[英]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.