如何将第 3 方 JAR 添加到 Maven 项目

How to add 3rd party JARs to Maven project

我的专业领域不是Java。我在其他平台上用其他语言开发。

现在我正在为一个项目开发一系列 Java servlet。 servlet 将 运行 在 CentOS 服务器上 运行ning FileNetP8。

我实际上完成了所有计划的项目并且 运行宁。

现在,当我尝试添加更多服务时,我遇到的库可通过 Maven 使用。我不知道 Maven 是什么。今天仔细阅读。创建了一个测试项目来试用它。

我的开发环境是 Windows10.

上的 Eclipse Photon

现在我的问题是我不知道如何将 Filenet JAR 添加到项目中。我无法将它们上传到某些 Maven 存储库。在网上搜索说要将它们添加到本地存储库,但我不明白如何在 Eclipse 的内置 Maven 中对本地存储库执行此操作。

我认为 JAR 不需要在部署中打包 WAR 因为该应用程序将部署到 运行s Filenet 的 Websphere 服务器,因此它们应该在上面可用.我应该将它们添加为外部 JAR 引用以使项目编译吗?

需要在 dependencies 标签下的 pom.xml 添加依赖项。 Maven第一次会从maven中央仓库下载指定的jar,并保存在你的本地repo中。 如果中央仓库中没有依赖项并且它们有自己的仓库,则需要在仓库标签中指定它。

<repositories>
    <repository>
         <id>repo-id</id>
         <name>repo-name</name>
         <url>http://repourl</url>
    </repository>
</repositories>

pom.xml中的任何变化,maven都会自动下载。

<dependencies>
   <dependency>
      <groupId>dependency-id</groupId>
      <artifactId>artifactid</artifactId>
      <version>1</version>
   </dependency>
</dependencies>

如果 jars 在 Maven Central 仓库中可用,那么您要做的就是在 pom.xml 文件的依赖项下添加依赖项。根据需要设置范围,就像你说的 jar 不需要打包在 WAR 文件中,因为它们可能在服务器上可用,那么你可以将范围设置为 provided

<dependency>
  <groupId>groud-id</groupId>
  <artifactId>artifact-id</artifactId>
  <version>version-numbe</version>
  <scope>scope</scope>
</dependency>

如果 jars 在中央仓库中不可用,而您想将它们安装在本地仓库中,那么下面的命令应该可以帮助您。更多信息 here.

mvn install:install-file -Dfile=<path-to-file> -DgroupId=<group-id> -DartifactId=<artifact-id> -Dversion=<version> -Dpackaging=<packaging>

下面我提供以下几种方法,根据你的适用性进行检查。

方法一:手动安装

如果您只有1个jar文件,请根据您的要求替换执行以下命令。

mvn install:install-file \
   -Dfile=<file path location> \
   -DgroupId=<your own custom group id> \
   -DartifactId=<your own custom artifact id> \
   -Dversion=<some version number> \
   -Dpackaging=jar \
   -DgeneratePom=true

完成后,在项目 pom.xml 的依赖项部分使用以下内容。

<dependency>
    <groupId>your own custom group id</groupId>
    <artifactId>your own custom artifact id</artifactId>
    <version>some version number</version>
</dependency>

上述方法的缺点是,只有您可以使用它,因为它安装在您的 .m2 目录中。对于其他开发人员,他们必须遵循相同的方法。这不是建议的方法。

方法二:手动添加jar文件所在位置

在pom.xml

中添加如下依赖
<dependency>
    <groupId>some.group.id</groupId>
    <artifactId>some.artifat.id</artifactId>
    <version>some.version.no</version>
    <scope>system</scope>
    <systemPath>${project.basedir}/libs/yourActualJarFileName.jar</systemPath>
</dependency>

上述方法的缺点是,您必须将所有 jar 文件放在一个目录中,并且您必须提供路径。所有的 jar 文件都应该是你项目的一部分,这意味着所有的 jar 文件都应该放在源代码库中。虽然它服务于目的,但它仍然不是一个好方法。如果你有一个 newer/higher 版本的 jar 文件,你必须再次将它放在你的 lib 目录中。这意味着您已经管理了所有新旧版本的jar文件。

最佳方法

维护 Nexus 或 Artifactory,或组织中的任何人工管理系统并放置所有 jar 文件并提供自定义 jar 文件的定义。它将为您提供 pom 定义。基于此,您必须在项目中添加依赖项pom.xml。在这里您可以维护您的自定义 jar 文件的 n 个版本。

鉴于每个答案都涉及 maven,我将尝试提供一种不同的、有点老派的方法。您始终可以通过右键单击它 -> 属性 -> 添加罐子,将您的罐子直接导入到您的项目中。完成后应用,Voilà。这比理解maven的复杂性要容易得多。