1.项目中需要引用本地jar包,而不是从中央仓库获取。
例如,短信发送时需要调用第三方接口,而调用接口时,短信内容和电话号码需要进行加密。这里所用的加密方式由第三方提供的 abc.jar 包,其版本为 1.0,并且 groupId 设置为 com.tool,与中央仓库的依赖不同。
方式1:将包install到本地,然后再正常引入依赖。
step1-install到本地
mvn install:install-file "-Dfile=jar包目录(比如D:\\abc.jar)" "-DgroupId=com.tool" "-DartifactId=abc" "-Dversion=1.0" "-Dpackaging=jar
step2-引入依赖
<dependency>
<groupId>com.tool</groupId>
<artifactId>abc</artifactId>
<version>1.0</version>
</dependency>
方式2: systemPath(不推荐)
systemPath引用的jar文件能直接用鼠标点进去,则说明路径正确
<dependency>
<groupId>com.tool</groupId>
<artifactId>abc</artifactId>
<version>1.0</version>
<scope>system</scope>
<systemPath>${project.basedir}/src/main/resources/lib/abc.jar</systemPath>
</dependency>
2.不推荐systemPath方式的原因是:
打包时会提示:强烈建议解决这些问题,因为它们可能会威胁到构建的稳定性。因此,未来的 Maven 版本可能不再支持构建此类格式不正确的项目。
3.优缺点对比与说明
3.1使用 Maven 的 mvn install 命令:
优势:
- 标准化管理: 使用
mvn install 将本地 JAR 包安装到本地 Maven 仓库中,使得您可以在项目中以标准的 Maven 依赖方式引用它,无需使用 。
- 依赖解析: Maven 会自动解析和下载依赖项的传递性,这意味着您引入的本地 JAR 包可能还依赖其他库,这些依赖将会被正确解析和下载。
劣势:
- 构建额外步骤: 需要执行
mvn install 命令来安装本地 JAR 包,可能需要更多步骤,特别是在共享项目或持续集成环境中。
- 依赖管理: 需要在每个引用该本地依赖的项目中执行
mvn install,可能需要更多的手动操作。
3.2使用 systemPaty方式:
优势:
- 快速引入: 可以更快速地将本地 JAR 包引入到项目中,无需执行mvn install 命令。
- 简单明确: 使用 直接指定 JAR 包的路径,使得依赖的来源更加清晰。
劣势:
- 依赖不稳定: 使用 可能会导致构建的稳定性问题,因为它依赖于本地文件系统路径,可能在不同环境中表现不一致。
- 传递性依赖: 使用 不会自动解决和下载传递性依赖,这可能需要手动管理。
综合来看,使用 Maven 的 mvn install 命令将本地 JAR 包安装到本地仓库中更为标准化、稳定和易于管理。虽然使用 可以更快速地引入本地依赖,但它可能导致一些不稳定性和依赖管理的问题。如果可能,建议优先考虑使用 Maven 的 mvn install 命令来引入本地依赖,以获得更好的依赖管理和构建稳定性。