在项目的研发过程中,我们经常需要导入外部系统提供的jar包,并且这种jar包并没有上传到开源的maven仓库,属于内部环境的包,那么应该如何添加呢?
springBoot
1、首先,将你的 JAR 文件拷贝到项目的 resources/lib
目录下。
2、然后,在 pom.xml
文件中添加以下依赖:
<dependency>
<groupId>your.groupId</groupId>
<artifactId>your-artifactId</artifactId>
<version>your-version</version>
<scope>system</scope>
<systemPath>${pom.basedir}/src/main/resources/lib/your-jar-file.jar</systemPath>
</dependency>
<scope>system</scope>
:这个依赖范围用于引入本地系统中的 JAR 文件。你需要通过 <systemPath>
元素指定 JAR 文件的路径。这样,Maven 将会从指定路径加载该 JAR 文件,而不是从远程仓库下载
3、重新加载pom文件就可以了
springCould
springcloud也可以采用上面springboot的方式,还可以采用直接放在pom文件同级目录下,并在pom文件添加依赖
<!-- ranger同步ldap用户 -->
<dependency>
<groupId>your.groupId</groupId>
<artifactId>your-artifactId</artifactId>
<version>your-version</version>
<scope>system</scope>
<systemPath>${pom.basedir}/libs/your-jar-file.jar</systemPath>
</dependency>
重新加载pom文件
扩展
scope
是 Maven 中用来指定依赖范围和传递性的关键字。在 pom.xml
文件中,我们可以使用不同的 scope
值来控制依赖的有效范围。以下是常见的 scope
取值及其含义:
- compile:默认的依赖有效范围。在编译、运行和测试时均有效。
- provided:在编译和测试时有效,但在运行时无效。通常用于 JDK 或容器提供的依赖,例如 Servlet API。
- runtime:在运行和测试时有效,但在编译代码时无效。常见于项目中的实现类,如 JDBC 驱动。
- test:仅在测试时有效,包括测试代码的编译和执行。例如 JUnit。
- system:在编译和测试时有效,但在运行时无效。与
provided
类似,但需要显式指定依赖文件的路径。- 用于引入本地系统中的 JAR 文件。
- 需要通过
<systemPath>
元素指定 JAR 文件的路径。 - 不会从远程仓库下载,而是直接从指定路径加载。