在项目过程中,有时候需要引入本地的jar包(比如企业自己的jar包或者修改过的源码包)。有两种方法可以使用
一、本地maven库
把jar包打到本地maven库,然后在pom文件中加上依赖
把jar和pom文件打到maven库的命令
mvn org.apache.maven.plugins:maven-install-plugin:3.0.0-M1:install-file -Dfile=path-to-your-artifact-jar -DpomFile=path-to-pom
打到本地库后,加入依赖;groupId和artifactId指向本地maven库地址
<dependency>
<groupId>com.ikw.ems</groupId>
<artifactId>utils.entrybuilder</artifactId>
<version>1.0-SNAPSHOT</version>
<scope>system</scope>
<systemPath>${project.basedir}/src/main/resources/lib/EMSCommon-1.0.jar</systemPath>
</dependency>
二、把jar包编入工程
如果只是在idea中运行,那么可以把jar拷贝到resources/lib下(要在SourceRoot下),然后在idea中右键lib文件夹,选择最下面的Add as Lirary...然后可以调用jar包中的接口了。
但是如果你此时打包的话,编译时,会报classNotFound(找不到类/程序)异常,是因为你的jar包没有在classpath中,这里需要把你的jar包所在的目录加到的编译classpath中
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.6.0</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
<compilerArguments>
<extdirs>${project.basedir}/src/main/resources/lib</extdirs>
</compilerArguments>
</configuration>
</plugin>
现在终于可以编译通过打包成jar包了,但是运行却发现还是报classNotFound异常,原因是springboot默认库的位置是/BOOT-INF/lib,而resources目录(SourceRoot)都被压到/BOOT-INF/classes下了,我们还要把jar包压到/BOOT-INF/lib中去
<resources>
<resource>
<directory>src/main/resources/lib</directory>
<targetPath>BOOT-INF/lib/</targetPath>
<includes>
<include>dems_util.jar</include>
</includes>
</resource>
<resource>
<directory>src/main/resources</directory>
</resource>
</resources>
resources是build的子标签,和plugins同级
网友评论