记录下Maven引入外部依赖jar问题

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,_ 回复 软件设计师即可。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值