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

现在的需求是将本地的jar包一起使用maven打包到jar中,并且lib中还包含dll动态库(见坑3);
ps: 最终pom.xml配置在最后
经历的坑1,无法打包本地lib中的jar:

      org.jnetpcap
      jnetpcap
      1.4.1
      system
      ${project.basedir}\lib\jnetpcap-1.4.r1425\jnetpcap.jar

使用systemPath的方式,可以将本地jar添加到依赖中,但在运行mvn compile assembly:assembly命令时会出现错误,即当添加system时,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的方法缺陷解决):

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



      
        org.jnetpcap
        jnetpcap
        1.3.0
      
      
  

  
    
      jnetpcap
      file://${project.basedir}\lib\jnetpcap-1.3.0\
    
  

通过这样的方式将本地lib中的依赖打包到jar中,(会直接在dependencies中添加,如图:
将本地的jar包使用maven打包到jar中,并处理lib中的本地dll动态库_第1张图片

经历的坑3(dll动态库没法打包,直接复制dll到项目根目录和target根目录):
  • jnetpcap还需要本地的dll动态库的支持,上图的打包方式不会打包dll库,就很烦,找到的解决办法:将该dll复制到打包完的jar同一目录下,可以使用。
  • 最后使用:mvn clean compile assembly:assembly打包,会在target下生成XXXXX-1.0-SNAPSHOT-jar-with-dependencies.jar,和XXXXX-1.0-SNAPSHOT.jar两个文件,分别包含和不包含依赖
  • 最终的打包pom.xml(可能有很多的重复功能,但不知道该删那些,菜鸡没办法,不想查)



  4.0.0

  Feature
  Detection
  1.0-SNAPSHOT

  Detection
  
  http://www.example.com

  
    UTF-8
    1.8
    1.8
  
    
      commons-cli
      commons-cli
      1.2
    

      
        org.jnetpcap
        jnetpcap
        1.3.0
      
  
  
  
    
      jnetpcap
      file://${project.basedir}\lib\jnetpcap-1.3.0\
    
  

  
    
      
        
        
          maven-clean-plugin
          3.1.0
        
        
        
          maven-resources-plugin
          3.0.2
        
        
          maven-compiler-plugin
          3.8.0
        
        
          maven-surefire-plugin
          2.22.1
        
        
          maven-jar-plugin
          3.0.2
        
        
          maven-install-plugin
          2.5.2
        
        
          maven-deploy-plugin
          2.8.2
        
        
        
          maven-site-plugin
          3.7.1
        
        
          maven-project-info-reports-plugin
          3.0.0
        

        
        

        
        
          org.apache.maven.plugins
          maven-compiler-plugin
          2.3.2
          
            1.8
            1.8
            UTF-8
            
              ${project.basedir}/lib/jnetpcap-1.3.0/
            
          
        

        
          org.apache.maven.plugins
          maven-jar-plugin
          2.3.2
          
            
              false
              
                true
                lib/
                Main
              
            
            
              
              **/*
            
          
        

        
        
          org.apache.maven.plugins
          maven-dependency-plugin
          
            
              copy
              package
              
                copy-dependencies
              
              
                
                  ${project.build.directory}/lib
                
              
            
          
        

        
        
          org.apache.maven.plugins
          maven-assembly-plugin
          
            
              jar-with-dependencies
            
            
              
                true
                lib/
                Main
              
            
          
          
            
              make-assembly
              package
              
                assembly
              
            
          
        

      
    
  


你可能感兴趣的:(pcap)