将本地的jar包使用maven打包到jar中,并处理lib中的本地dll动态库

本文档描述了如何使用Maven将本地jar包及其lib目录下的dll动态库一起打包到可执行jar中。过程中遇到了三个问题:1)无法打包lib中的jar;2)systemPath方法的缺陷;3)dll动态库无法打包。解决方案包括修改pom.xml配置,确保dll被正确复制到目标目录。最终生成了包含和不包含依赖的两个jar文件。
摘要由CSDN通过智能技术生成
现在的需求是将本地的jar包一起使用maven打包到jar中,并且lib中还包含dll动态库(见坑3);
ps: 最终pom.xml配置在最后
经历的坑1,无法打包本地lib中的jar:
<dependency>
      <groupId>org.jnetpcap</groupId>
      <artifactId>jnetpcap</artifactId>
      <version>1.4.1</version>
      <scope>system</scope>
      <systemPath>${project.basedir}\lib\jnetpcap-1.4.r1425\jnetpcap.jar</systemPath>
</dependency>

使用systemPath的方式,可以将本地jar添加到依赖中,但在运行mvn compile assembly:assembly命令时会出现错误,即当添加<scope>system</scope>时,lib中的依赖添加不到打包的jar中,不添加会报如下的错:

Build error: 'dependencies.dependency.systemPath' for com.parse:parse:jar must be omitted. This field may only be specified for a dependency with system scope
经历的坑2(systemPath的方法缺陷解决):

在查找解决方法后,得到如下结果:

<dependencies>

      <dependency>
        <groupId>org.jnetpcap</groupId>
        <artifactId>jnetpcap</artifactId>
        <version>1.3.0</version>
      </dependency>
      
  </dependencies>

  <repositories>
    <repository>
      <id>jnetpcap</id>
      <url>file://${project.basedir}\lib\jnetpcap-1.3.0\</url>
    </repository>
  </repositories>

通过这样的方式将本地lib中的依赖打包到jar中,(会直接在dependencies中添加,如图:
在这里插入图片描述

经历的坑3(dll动态库没法打包,直接复制dll到项目根目录和target根目录):
  • jnetpcap还需要本地的dll动态库的支持,上图的打包方式不会打包dll库,就很烦,找到的解决办法:将该dll复制到打包完的jar同一目录下,可以使用。
  • 最后使用:mvn clean compile assembly:assembly
  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值