Maven - 外部依赖
现在如你所知,Maven使用Maven - 仓库 的概念来进行依赖管理。但是,如果依赖在任何远程仓库和中央仓库中都找不到该怎么办呢?Maven 为这种场景提供的对策是使用外部依赖。
举个例子,让我们为在Maven - 创建项目 章节创建的项目做如下的改动:
向 src 文件夹中添加 lib 文件夹
复制任意 jar 包到 lib 文件夹下。我们使用的是 ldapjdk.jar,这是一个LDAP操作的工具类库。
现在我们项目的目录结构应该如下所示:
这里,你在为项目指定你自己的库,这样做很常见,而且库中可能包含 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 的项目中指定外部依赖。