最近开发了一个springboot程序,需要依赖第三方jar包,这个jar包无法直接通过pom远程仓库下载,需要从自己本地引入,于是配置pom文件如下:将本地jar包引入工程,systemPath为jar所在的本地路径
com.hikvision.js masmgc.sdk.mms1.0.3-SNAPSHOT system ${project.basedir}/lib/masmgc.sdk.mms-1.0.3-SNAPSHOT.jar
bin
zip
false
lib
false
${project.basedir}
/
README*
LICENSE*
NOTICE*
${project.basedir}/src/main/resources/
config
**/mybatistemp/**
${project.basedir}/src/main/resources/temp
temp
${project.basedir}/src/main/bin/
bin
*.bat
*.sh
${project.basedir}/lib/
lib
${project.build.directory}
deployalarmsm-1.0.0004.jar
maven-assembly-plugin的打包配置文件package.xml中添加配置,把本地依赖的jar打包到了lib目录下,但服务器上运行还是找不到jar包中的类。2.问题排查 波折
网上搜索答案,说原因是:
如果项目依赖了pom中定义的dependency之外的外部jar包,maven-jar-plugin默认是不会把这
些额外jar包的依赖信息放在jar文件的MANIFEST.MF文件中的,这会导致jar包运行时出现找不到指定类的错误。
要包jar包添加到配置
org.apache.maven.plugins maven-jar-pluginfalse true lib/ com.hikvision.js.deployalarmsm.DeployalarmsmApplication lib/masmgc.sdk.mms-1.0.3-SNAPSHOT.jar config/ ${project.basedir}/src/main/resources/ *.properties *.xml
重新maven打包,发现有个warning:
[WARNING]
[WARNING] Some problems were encountered while building the effective model for com.hikvision.js.deployalarmsm:deployalarmsm:jar:1.0.0004
[WARNING] 'dependencies.dependency.systemPath' for com.hikvision.js:masmgc.sdk.mms:jar should not point at files within the project directory, ${project.basedir}/lib/masmgc.sdk.mms-1.0.3-SNAPSHOT.jar will be unresolvable by dependent projects @ line 229, column 25
[WARNING]
[WARNING] It is highly recommended to fix these problems because they threaten the stability of your build.
[WARNING]
[WARNING] For this reason, future Maven versions might no longer support building such malformed projects.
显然提示的是通过system Scope方式引入jar包不建议使用了,甚至高版本的maven已经不支持了,于是需要把第三方jar包发布到maven私服,在通过正常的maven依赖进来;
com.hikvision.js
masmgc.sdk.mms
1.0.3-SNAPSHOT
通过插件将jar包发布到私服,执行clean 即可;
org.apache.maven.plugins maven-install-plugin2.5.2 install-masmgc.sdk.mms clean ${project.basedir}/lib/masmgc.sdk.mms-1.0.3-SNAPSHOT.jar default com.hikvision.js masmgc.sdk.mms1.0.3-SNAPSHOT jar true install-file



