Maven - 外部依赖

现在如你所知,Maven使用Maven - 仓库 的概念来进行依赖管理。但是,如果依赖在任何远程仓库和中央仓库中都找不到该怎么办呢?Maven 为这种场景提供的对策是使用外部依赖

举个例子,让我们为在Maven - 创建项目 章节创建的项目做如下的改动:

  • 向 src 文件夹中添加 lib 文件夹

  • 复制任意 jar 包到 lib 文件夹下。我们使用的是 ldapjdk.jar,这是一个LDAP操作的工具类库。

现在我们项目的目录结构应该如下所示:

external repository project structure

这里,你在为项目指定你自己的库,这样做很常见,而且库中可能包含 Maven 在任何可供下载的仓库中都找不到的 jar 包。如果你的代码把这个库与 Maven 共用,那么 Maven 构建时将会失败,因为 Maven 在编译阶段无法下载或者引用这个库。

为了解决这种情形,让我们使用下面的方法向 Maven 的 pom.xml 文件中添加外部依赖。

<project xmlns="http://maven.apache.org/POM/4.0.0" 
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
   http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <groupId>com.companyname.bank</groupId>
   <artifactId>consumerBanking</artifactId>
   <packaging>jar</packaging>
   <version>1.0-SNAPSHOT</version>
   <name>consumerBanking</name>
   <url>http://maven.apache.org</url>

   <dependencies>
      <dependency>
         <groupId>junit</groupId>
         <artifactId>junit</artifactId>
         <version>3.8.1</version>
         <scope>test</scope>
      </dependency>

      <dependency>
         <groupId>ldapjdk</groupId>
         <artifactId>ldapjdk</artifactId>
         <scope>system</scope>
         <version>1.0</version>
         <systemPath>${basedir}\src\lib\ldapjdk.jar</systemPath>
      </dependency>
   </dependencies>

</project>

看到上面例子中dependencies节点下的第二个 dependency 节点,它指明了以下几个关于外部依赖的重要概念:

  • 外部依赖(库中 jar 包的位置)可以在 pom.xml文件中配置,配置的方法与其他依赖相同。

  • 指定与库名同名的 groupId。

  • 指定与库名同名的 artifactId。

  • 指定 scope 为 system。

  • 指定 systemPath 为库中 jar 包相对于项目的路径。

希望现在你清楚地了解了外部依赖,并且能够在你的 Maven 的项目中指定外部依赖。

results matching ""

    No results matching ""