IDEA打包jar包的多种方式

  • 用IDEA自带的打包形式
  • 用Maven插件maven-shade-plugin打包
  • 用Maven插件maven-assembly-plugin打包

用IDEA自带的打包形式

1.File->Project Structure->Artifacts->Add->Jar->From modules with dependencies

2.配置

第一步选择Main函数执行的类。
第二步选择如图的选项,目的是对第三方Jar包打包时做额外的配置,如果不做额外的配置可不选这个选项(但不保证打包成功)
第三步需要在src/main目录下,新建一个resources目录,将MANIFEST.MF文件保存在这里面,因为如果用默认缺省值的话,在IDEA12版本下会有bug。

点击ok

3.把第三方jar包放入lib目录

4.build

5.在out/artifacts目录下生成jar包

用maven-shade-plugin打包

上面的打包过程实在是过于的繁琐,而且也没有利用到maven管理项目的特色。为此,我们这里利用maven中的maven-shade-plugin插件。在pom.xml中,我们加入如下的信息来加入插件。

1.加入maven-shade-plugin插件

<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-shade-plugin</artifactId><version>1.4</version><configuration><createDependencyReducedPom>true</createDependencyReducedPom></configuration><executions><execution><phase>package</phase><goals><goal>shade</goal></goals><configuration><transformers><transformer
                                        implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"><mainClass>Main.Main</mainClass></transformer></transformers></configuration></execution></executions></plugin>

这里面配置了一个`configuration`标签内容,在此标签下面 有一个transformer标签,用来配置Main函数的入口( <mainClass>Main.Main</mainClass>),当然此标签内容很复杂,不是上面写的那么简单,上面之所以如此简单,是因为在所有类中(包括第三方Jar)只有一个Main方法。如果第三方jar中有Main方法,就要进行额外的配置,上面这么配置,不一定能执行成功。

2.使用maven命令打包

mvn clean compile //清除之前target编译文件并重新编译
mvn clean package //对项目进行打包(因为配置过插件,所以jar包是可执行的)
mvn clean install //安装项目,然后就可以使用了

可以通过自带的maven管理工具代替执行上面的命令

注意: 想要忽略测试用例

mvn package -DskipTests

或者

mvn package -Dmaven.test.skip=true

maven.test.skip同时控制maven-compiler-plugin和maven-surefire-plugin两个插件的行为,即跳过编译,又跳过测试

也可以使用插件

<plugin>  <groupId>org.apahce.maven.plugins<groupId>  <artifactId>maven-surefire-plugin</artifactId>  <version>2.5</version>  <configuration>  <includes>  <include>**/*Tests.java</include>  </includes>  </configuration>
</plugin>  

使用* / Test.Java 来匹配所有以Tests结尾的Java类。两个星号*用来匹配任意路径,一个星号用来获取除路径风格符外的0个或多个字符。还可使用excludes来排除Test类

在target/目录下生成jar包

使用java -jar xxx.jar运行即可

用maven-assembly-plugin打包

上面的方法,我们还需要点击很多命令去打包。这次利用一个新的插件,可以打包更简单。同样,在pom.xml中加入如下代码。上文的maven-shade-plugin插件代码可以删除。最好不要写2个插件代码。

 <plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-assembly-plugin</artifactId><version>2.2-beta-5</version><configuration><descriptors><descriptor>src/main/resources/assembly.xml</descriptor></descriptors><archive><manifest><mainClass>Main.Main</mainClass></manifest></archive></configuration>
</plugin>
<assembly><id>j2se-assembly</id><formats><format>jar</format></formats><dependencySets><dependencySet><outputDirectory>lib</outputDirectory></dependencySet></dependencySets>
</assembly>

这里同样配置了一个manifest标签来配置Main函数的入口。然后通过如下指令来实现打包。

mvn assembly:assembly

或者

========使用mvn assembly:assembly运行会出现Error reading assemblies: No assembly descriptors found 异常,但是使用mvn package命令打包没问题 不知道为什么(꒪⌓꒪)=======


Intellij IDEA 打包jar的多种方式相关推荐

  1. idea打包jar的多种方式,依赖解决方式

    idea打包jar的多种方式 依赖解决方式 https://www.cnblogs.com/dinghong-jo/p/7873646.html 这里总结出用IDEA打包jar包的多种方式,以后的项目 ...

  2. Intellij Idea打包jar

    https://blog.csdn.net/xuemengrui12/article/details/74984731 步骤: 1. 选中Java项目工程名称,在菜单中选择 File->proj ...

  3. IntelliJ IDEA生成jar包运行报Error:A JNI error has occurred,please check your installation and try again

    首先介绍一下IntelliJ IDEA生成jar包的方式: 1.打开项目,打开FIile->Project Structure...菜单.如下图: 选中Artifacts,点+号,选择JAR,再 ...

  4. Intellij IDEA 添加jar包的三种方式

    Intellij IDEA 添加jar包的三种方式 inzaghihalo https://blog.csdn.net/superinzaghi747/article/details/80539095 ...

  5. Spring学习总结(一)——Spring实现IoC的多种方式

    一.Spring框架概述 Spring是一个开源免费的框架,为了解决企业应用开发的复杂性而创建.Spring框架是一个轻量级的解决方案,可以一站式地构建企业级应用.Spring是模块化的,所以可以只使 ...

  6. IDEA中MAVEN项目如何打包JAR包

    这篇文章主要为大家展示了"IDEA中MAVEN项目如何打包JAR包",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"IDEA中M ...

  7. Spring Boot项目打war包(idea:多种方式)

    Spring Boot项目打war包(idea:多种方式) 前言:在idea中,经常会对web项目进行打jar包或者war包.jar包在Java环境中运行,war包在Tomcat服务器中跑.对于打wa ...

  8. spring boot 打包jar,jar没有主目录清单

    (1)spring boot 打包jar   如果有不对的还请指点,知道自己技术部怎么样,第一次写,写的有点乱    理解一下 1.在POM.xml文件下添加如下代码:注意:version.confi ...

  9. 《Android深度探索(卷1):HAL与驱动开发》——6.4节使用多种方式测试Linux驱动...

    本节书摘来自异步社区<Android深度探索(卷1):HAL与驱动开发>一书中的第6章,第6.4节使用多种方式测试Linux驱动,作者李宁,更多章节内容可以访问云栖社区"异步社区 ...

最新文章

  1. linux安装后硬盘变小,Linux硬盘安装步骤
  2. Problem 2238 Daxia Wzc's problem 1627 瞬间移动
  3. .net 出现的异常
  4. 企业微信_获取access_token
  5. LabVIEW连接MySQL数据库
  6. 交互式python解释器_从python脚本中调用python交互式解释器
  7. android自定义指针,Android实现HID鼠标的指针自定义
  8. StarUML3.0.2——超好用的UML画图工具推荐
  9. 网络信息安全之纵深防御
  10. train,dev,test数据集划分
  11. 第二重要极限公式推导过程_机器学习——一文详解逻辑回归「附详细推导和代码」...
  12. Pytorch使用CPU
  13. 怎么用按键精灵快速开发计算距离自己最近的怪物/包裹/金矿坐标的脚本
  14. QCC512X--QCC514X--QCC302X--QCC304X烧录工具
  15. 9.22生日——随笔
  16. java 最后的异常_关于java:异常处理尝试没有catch,但最后
  17. 微博爬虫——爬取指定范围内所有帖子包含的定位信息的方法
  18. python第三方库——xlrd和xlwt操作Excel文件学习
  19. QT--多TCP客户端
  20. 做个全栈工程师真的好吗?

热门文章

  1. xctf攻防世界 MISC高手进阶区 Ditf
  2. rabbitmq多个消费者消费同一个队列中的同一条消息。
  3. Java实现字符串反转的几种方法
  4. PS 中图层为索引,修改成背景可编辑
  5. 模拟微信接口时,提示“请在微信客户端打开链接”(转)
  6. 布莱克斯科尔斯模型(一)
  7. 全国泰州市专业技术人员计算机考试,泰州市专业技术人员实用教程试题及答案(92分)...
  8. 二叉树遍历(非递归遍历)
  9. RTMP协议封装H264和H265协议详解
  10. 小福利,用python打造自己的图书管理系统