将 jar 库添加到 Maven 项目

Posted

技术标签:

【中文标题】将 jar 库添加到 Maven 项目【英文标题】:Adding jar library to Maven project 【发布时间】:2012-08-13 02:41:39 【问题描述】:

我有一个用 Maven 开发的项目。我想将新的 jar 文件添加到类路径。我在 pom.xml 文件中添加了新的依赖项:

<dependency>
<groupId>mzmatch</groupId>
<artifactId>mzmatch</artifactId>
<version>1.2.13</version>
</dependency>

所有的 jar 库都在 lib 目录中。所有库的名称都与 artifactId-version.jar 匹配,它们的位置是(在 lib 目录内)groupId/artifactId/version。所以我对我的 mzmatch-1.2.13.jar 文件做了同样的事情。

除了在 pom 文件中添加新的依赖项之外,我还将我的 jar 添加到 Manifest.MF 文件的类路径中。但是软件仍然看不到我的罐子。我还应该做什么?还是我没有正确添加库?

【问题讨论】:

嗯...所以你想将新的 jar 文件添加到类路径。那你为什么将它添加到 pom.xml 而不是类路径?你想将你的 jar 安装到 maven 系统中吗?如果是这样,你有没有看过 mvn install ? 【参考方案1】:

我假设这是您开发的一个 jar,现在希望 Maven 将其作为依赖项拾取。为此,您需要将其安装到本地 Maven 存储库。不是项目的 lib 目录,而是 .m2 目录(可能在 Windows 的主目录之外)。你可能想从命令行运行它:

mvn install:install-file -Dfile=<path-to-file> -DgroupId=mzmatch -DartifactId=mzmatch -Dversion=1.2.13 -Dpackaging=jar

查看here 了解更多信息。

编辑 1:我假设 OP 不在一个更大的团队中工作。如果开发团队中的其他任何人都需要依赖项,则需要将其部署到共享的内部工件存储库,例如 Nexus 或 Artifactory。这些应用程序有一个用于上传工件的页面。

编辑 2:在 pom.xml 中添加一个库作为依赖项可确保 Maven 在编译此新项目的代码时将其放在类路径中。如果您希望它在运行时出现(例如,如果您想要一个可执行的 jar),并且您希望将它放在 MANIFEST.MF 的 Class-Path 条目中,那么您可以使用 Maven set it up。这仍然不会将mzmatch-1.2.13.jar 文件放在与新项目相同的目录中。如果您不想手动执行此操作,Maven 可以再次do it for you。

【讨论】:

如果 OP 正在与其他开发人员合作,则该文件应部署到共享存储库,而不是安装到本地文件存储库中。 @jtahlborn 假设 OP 在本地工作。不过,请在内部存储库中添加注释。 谢谢。但是,您不需要使用存储库页面,您很可能会使用 deploy:deploy-file 目标。 我在存储库中安装了 jar,如何生成新的 Manifest 文件?我将我的 jar 添加到清单文件中的类路径并构建新的 jar 包,但是,它仍然看不到我的新 jar。我不知道为什么它看不到它(( 已编辑以添加更多信息。你到底想做什么?构建一个可执行的.jar?请为您的问题添加更多细节。

以上是关于将 jar 库添加到 Maven 项目的主要内容,如果未能解决你的问题,请参考以下文章

Maven添加依赖本地jar包

如何将 Java JAR 文件添加到 Grails 项目?

将jstontools jar添加到Maven存储库

将外部 jar 添加到 Maven 存储库不起作用 [重复]

将第3方的jar 添加到本地Maven库

如何将本地项目(不是 jar)作为依赖项添加到 Maven 项目