最近使用 Spring Boot
做一些小东西,需要引入本地的 jar,而且要求打包时将这些本地 jar 一起打包。
Maven 项目中引入本地 jar 包的常用方式
1. 将 jar 打包到本地 Maven 仓库
mvn install:install-file -Dfile=D://xxx.jar -DgroupId=com.xxx -DartifactId=xxx -Dversion=0.0.1 -Dpackaging=jar
缺点是 install 之后,依赖只存在本地的 Maven 仓库中,如果别的机器想使用这个依赖,还是需要运行上面的命令。
2. IDE 引入
例如我使用 IDEA,我直接在 Project Structure -> Liberies
中增加 jar 路径。
这种方式在开发时没问题,但是使用 Maven 打包时并不会包含这些 jar
3. 利用 pom 文件的 scope 属性
将要引用的本地 jar 都放在项目的 lib 目录中,然后在 pom 文件中引入
<!-- 有度SDK, -->
<dependency>
<artifactId>youdu-sdk-java</artifactId>
<groupId>im.youdu.sdk</groupId>
<version>1.9-SNAPSHOT</version>
<scope>system</scope>
<systemPath>${project.basedir}/lib/youdu-sdk-java-1.9.jar</systemPath>
</dependency>
然后在 plugin 中,加入
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<includeSystemScope>true</includeSystemScope>
</configuration>
</plugin>
这种方式理论上开发,打包都能够正常完成。但是,但是,但是,在我的电脑上并不正常,最后我通过将 ${project.basedir} 改为 ${pom.basedir} 之后就正常了。
那么,${project.basedir}
和 ${pom.basedir}
有什么不同呢?
${project.basedir}
:表示 project 的目录
${pom.basedir}
:表示 pom 文件的目录
这两个待求证,我还真没查到,有知道的同学也可以告诉我,一起学习呀!