java打包时打入本地依赖包

  • 方案1:将所有依赖写入jar包
  • 方案2:打包时在MANIFEST.MF文件中写入jar包依赖

在某些情况下,需要进行本地依赖包引入.但如果配置不当很容易出现NoClassDefFoundError的报错.
目前正好进行sdk开发,因此整理打包时加入本地依赖包的方案与过程.

方案1:将所有依赖写入jar包

在某些情况下(如内网环境),第三方依赖包并不一定能够使用maven进行下载(如果没有Nexus服务器),且需要生成一个可单独使用的jar包(如sdk开发)
因此可以将所有的依赖都写入jar包中

下边是步骤:

(1)pom文件中导入本地包

  <dependency><!-- groupId artifactId version内容随意写 -->><groupId>livillya.von.einzbern</groupId><artifactId>livillya.von.einzbern</artifactId><version>1.0.0</version><scope>system</scope> <systemPath>${project.basedir}/src/main/resources/lib/你的jar包名.jar</systemPath></dependency>

此时,如果是单纯跑项目,已经是可以使用
(2)编写pom.xml的build参数

     <build><plugins><!-- 用于管理版本,某些项目是没有parent引用的--><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.8.1</version><configuration><source>1.8</source><target>1.8</target><encoding>UTF-8</encoding></configuration></plugin><!-- 使用maven-assembly-plugin --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-assembly-plugin</artifactId><version>3.1.1</version><configuration><descriptors><!--assembly配置文件路径,注意需要在项目中新建文件assembly/package.xml--><!-- ><descriptor>${basedir}/assembly/package.xml</descriptor> --><descriptor>src/main/resource/package.xml</descriptor></descriptors></configuration><!-- executions配置  --><executions><execution><id>make-assembly</id><!-- 绑定到package生命周期 --><phase>package</phase><goals><!-- 只运行一次 --><goal>single</goal></goals></execution></executions></plugin></plugins></build>

如果不进行 executions配置,则需要自己执行 mvn package assembly:single

以下为package.xml

<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd"><id>package</id><formats><format>jar</format><!-- 如果写多个format,可打出多种包<format>zip</format> <format>tar.bz2</format>--></formats><includeBaseDirectory>false</includeBaseDirectory><dependencySets><dependencySet><outputDirectory>/</outputDirectory><useProjectArtifact>true</useProjectArtifact><unpack>true</unpack><scope>runtime</scope></dependencySet><dependencySet><outputDirectory>/</outputDirectory><useProjectArtifact>true</useProjectArtifact><unpack>true</unpack><scope>system</scope></dependencySet></dependencySets>
</assembly>

此时,进行打包操作后,可多得到一个 你的项目打包名-package.jar 的jar包,该包包含所有依赖文件

方案2:打包时在MANIFEST.MF文件中写入jar包依赖

大部分项目并不需要把jar文件单独使用,可以打成一个jar和lib分开的包
在MANIFEST.MF的Class-Path中加入jar包的路径即可
以下为我常用的build配置

 <build><finalName>你的项目名</finalName><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-dependency-plugin</artifactId><executions><execution><id>copy-dependencies</id><phase>package</phase><goals><goal>copy-dependencies</goal></goals><configuration><type>jar</type><includeTypes>jar</includeTypes><outputDirectory>${project.basedir}/src/main/resources/lib/</outputDirectory><outputDirectory>${project.build.directory}/lib</outputDirectory></configuration></execution></executions></plugin><!-- 打包jar文件时,配置manifest文件,加入lib包的jar依赖 --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-jar-plugin</artifactId><version>3.2.0</version><configuration><classesDirectory>target/classes/</classesDirectory><archive><manifest><mainClass>com.main.你的程序入口</mainClass><!-- 打包时 MANIFEST.MF文件不记录时间戳版本 --><useUniqueVersions>false</useUniqueVersions><addClasspath>true</addClasspath><classpathPrefix>lib/</classpathPrefix></manifest><manifestEntries><!-- 假设你的jar包放在resources/lib中 --><Class-Path>../config/ ./config/ . lib/你的jar包名.jar</Class-Path></manifestEntries></archive><excludes><!--编译结果目录开始算目录结构 --><exclude>lib/*</exclude><exclude>config/**</exclude><exclude>bin/**</exclude><exclude>*</exclude></excludes></configuration></plugin></plugins></build>

java打包时打入本地依赖包相关推荐

  1. Maven项目打包时添加本地jar包

    maven打包时添加外部jar同maven中的jar包一起添加到编译后的文件当中 在开发项目时,有些 jar 包是非 maven 仓库提供的第三方 jar 包,比如七牛的 sdk,阿里的 sdk 等等 ...

  2. maven 打包指定依赖包_maven打包加入依赖包以及加入本地依赖包的方法

    Maven引入本地Jar包并打包进War包中 1.概述 在平时的开发中,有一些Jar包因为种种原因,在Maven的中央仓库中没有收录,所以就要使用本地引入的方式加入进来. 2. 拷贝至项目根目录 项目 ...

  3. maven打包时加入依赖包及加入本地依赖包

    maven打包的时候默认是不加入依赖的jar包的,所以想打出一个独立的可运行jar包的话直接mvn clean install package是不行的.需要略改动下pom文件,加入如下plugin ? ...

  4. maven打包war,导入本地jar包

    方法1: 一 . 在项目根目录创建lib文件夹,把jar放入lib文件夹中 二 . 在项目中使用本地jar pom文件配置如下: <properties><project.build ...

  5. android so文件不混淆_Android studio 混淆打包时如何忽略依赖库中的第三方.so文件...

    如题,今天在打包项目的时候各种报错,在debug的时候没有任何问题,那么很快定位到问题所在---第三方.so文件混淆出问题了.... 项目是在AS中编译的一个module,依赖了一个以前在Eclips ...

  6. python pip下载本地依赖包,并在离线环境中安装,并解决报错ERROR: Could not find a version that satisfies the requirement报错

    文章目录 步骤1:导出依赖 步骤2:离线下载依赖包 步骤3:进入新环境使用python安装依赖 整体思路如下: 首先根据项目需要导出依赖包,由于本地的python环境中其实安装了很多乱七八糟的包,这些 ...

  7. java打包成jar|执行jar包中的main方法

    java打包成jar jar -cvf [jar包的名字] [需要打包的文件] 执行jar包中的main方法 java -jar ****.jar 执行后总是运行指定的主方法,如果 jar 中有多个 ...

  8. java -jar 找不到依赖包_java找不到jar包的解决方法

    java找不到jar包的解决方法 发布时间:2020-04-16 14:38:04 来源:亿速云 阅读:280 作者:小新 今天小编给大家分享的是java找不到jar包的解决方法,很多人都不太了解,今 ...

  9. java 将依赖打包进lib_maven把依赖包拷贝到lib下

    标准web工程在eclipse中利用m2eclipse插件添加依赖管理后,在部署过程中没有将依赖的jar包自动拷贝到/WEB-INF/lib中. 参考了一些朋友的做法手动执行 mvn dependen ...

  10. springboot打包时加入本地jar打包

    2019独角兽企业重金招聘Python工程师标准>>> 1. 在src下建立一个文件夹  eg: src/lib 2. 修改pom.xml 在bulid内添加如下元素 <!-- ...

最新文章

  1. python -- plt图表
  2. JAE京东云引擎Git上传管理代码教程和京东云数据库导入导出管理
  3. 独家 | 一文了解强化学习的商业应用
  4. [YTU]_1985( C语言实验——保留字母)
  5. LeetCode_每日一题今日份_167.两数之和II-输入有序数组
  6. VC实现表单提交并设置获取COOKIE:
  7. 2021的行情下如何能够赚到自己认知范围内的钱?一些投资需要补充的内容
  8. sass之mixin的全局引入(vue3.0)
  9. Color.js增强你对颜色的控制
  10. logrotate工具日志切割
  11. git把当前修改提交合并到上一条提交如何操作
  12. contentprovider java_访问不了自己创建的Contentprovider,报错:java.lang.SecurityException: Permission Denial...
  13. 新闻APP受到各界关注 趣头条 大众看点 等新闻
  14. 双硬盘双win10互不干扰_双硬盘双系统 完全独立|硬盘安装Win10单双系统的详细步骤...
  15. (10.13更新--完结)我不是大神(腾讯+京东+网易+阿里+去哪儿网面筋)
  16. 2018年最新old男孩python全栈第九期课程-大牛编程吧-Python编程精品区-大牛编程吧
  17. typora里面如何快捷改变字体颜色?
  18. 第七章——数据挖掘(2)
  19. leetcode 巧妙解法 387. 字符串中的第一个唯一字符
  20. python dataframe索引筛选_python-Pandas DataFrame:查找两列相等/相同的特定长度序列的索引值...

热门文章

  1. 反激电源基本原理和简单的使用例程 学习笔记
  2. ovirt4.4.10安装配置USB重定向
  3. CSS基础知识10-两种CSS布局
  4. 制作整人计算机病毒,自己制作简单病毒---三行命令的整人BAT,弹出很多窗口,一直弹到内存耗...
  5. python 批量打开网页并截图_如何实现批量截取整个网页完整长截图,批量将网页保存成图片web2pic/webshot/screencapture/html2picture...
  6. 最新添加了一键加入服务器的功能,功能介绍 - 晴天漫画系统 晴天漫画程序 基于标签的一套自动采集更新漫画系统...
  7. webuploader java版本
  8. Linux内核编译 —— 配置文件
  9. 粒子群算法及C语言实现
  10. 微型计算机控制第三版,清华大学出版社-图书详情-《微型计算机控制技术(第3版)》...