Maven引入外部依赖jar问题
通常项目会引用第三方的sdk或者本地开发小工具jar包
一般maven引入外部依赖包没有仓库坐标的,基本会通过坐标导入
<dependency>
<groupId>com.mk.opencv</groupId>
<artifactId>qrcode</artifactId>
<version>2.1.0</version>
<scope>system</scope> //系统文件
<systemPath>${project.basedir}/lib/WeChatQRCode-2.1.0.jar</systemPath> //依赖jar实际路径
</dependency>
打包jar非springboot-jar会忽略systeam标签的jar
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.5.0</version>
<executions>
<!-- First main class -->
<execution>
<id>shade-app1</id>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>com.lc.photo.review.view.WebcamCaptureMain</mainClass>
</transformer>
</transformers>
<artifactSet>
<includes>
<include>com.mk.opencv:qrcode:jar:*</include>
<include>commons-io:commons-io:jar:*</include>
<include>com.github.sarxos:webcam-capture:jar:*</include>
<include>com.alibaba:fastjson:jar:*</include>
<include>cn.hutool:hutool-all:jar:*</include>
<include>com.jgoodies:forms:jar:*</include>
<include>com.nativelibs4java:bridj:jar:*</include>
<include>org.slf4j:slf4j-api:jar:*</include>
<include>org.apache.commons:commons-lang3:jar:*</include>
</includes>
</artifactSet>
</configuration>
</execution>
</executions>
</plugin>
用<maven-shade-plugin>
插件打包jar是比较推荐的方式,在include依赖包的时候,maven会排除掉<scope>system</scope>
为system的坐标jar,导致java -jar xxx.jar
启动程序会出现找不到类的异常,
解决方法:包外部的jar压入到本地仓库,然后在pom.xml
中包依赖jar,maven坐标改成正常坐标调用即可
mvn install:install-file \
-Dfile=<path-to-your-jar-file> \
-DgroupId=<your-group-id> \
-DartifactId=<your-artifact-id> \
-Dversion=<your-version> \
-Dpackaging=jar
<path-to-your-jar-file> 是你要安装的 JAR 文件的完整路径。
<your-group-id> 是 JAR 包的 groupId,通常是一个反向域名加上组织或项目的名称。
<your-artifact-id> 是 JAR 包的 artifactId,通常是项目或库的名称。
<your-version> 是 JAR 包的版本号。
假设你有一个 JAR 文件位于 =D:\projects\qrcode-2.1.0.jar,并且你想将其安装到本地 Maven 仓库中,可以使用以下命令
mvn install:install-file \
-Dfile=D:\projects\qrcode-2.1.0.jar \
-DgroupId=com.mk.opencv\
-DartifactId=qrcode\
-Dversion=2.1.0 \
-Dpackaging=jar
pom.xml
修改如下:
#修改前:
<dependency>
<groupId>com.mk.opencv</groupId>
<artifactId>qrcode</artifactId>
<version>2.1.0</version>
<scope>system</scope> //系统文件
<systemPath>${project.basedir}/lib/WeChatQRCode-2.1.0.jar</systemPath> //依赖jar实际路径
</dependency>
#修改后:
<dependency>
<groupId>com.mk.opencv</groupId>
<artifactId>qrcode</artifactId>
<version>2.1.0</version>
</dependency>
在执行mvn clean package, xxx.jar就包含你的外部依赖包qrcode-2.1.0.jar了
效果完美!!!!!!
需要软考资料的可以关注下哟~~~~ 祝你上岸顺利
相关文章《软件设计师软考资料包 需要的点》
添加VVVVX,_ 回复 软件设计师
即可。