Intellij IDEA 打包jar的多种方式
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的多种方式相关推荐
- idea打包jar的多种方式,依赖解决方式
idea打包jar的多种方式 依赖解决方式 https://www.cnblogs.com/dinghong-jo/p/7873646.html 这里总结出用IDEA打包jar包的多种方式,以后的项目 ...
- Intellij Idea打包jar
https://blog.csdn.net/xuemengrui12/article/details/74984731 步骤: 1. 选中Java项目工程名称,在菜单中选择 File->proj ...
- 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,再 ...
- Intellij IDEA 添加jar包的三种方式
Intellij IDEA 添加jar包的三种方式 inzaghihalo https://blog.csdn.net/superinzaghi747/article/details/80539095 ...
- Spring学习总结(一)——Spring实现IoC的多种方式
一.Spring框架概述 Spring是一个开源免费的框架,为了解决企业应用开发的复杂性而创建.Spring框架是一个轻量级的解决方案,可以一站式地构建企业级应用.Spring是模块化的,所以可以只使 ...
- IDEA中MAVEN项目如何打包JAR包
这篇文章主要为大家展示了"IDEA中MAVEN项目如何打包JAR包",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"IDEA中M ...
- Spring Boot项目打war包(idea:多种方式)
Spring Boot项目打war包(idea:多种方式) 前言:在idea中,经常会对web项目进行打jar包或者war包.jar包在Java环境中运行,war包在Tomcat服务器中跑.对于打wa ...
- spring boot 打包jar,jar没有主目录清单
(1)spring boot 打包jar 如果有不对的还请指点,知道自己技术部怎么样,第一次写,写的有点乱 理解一下 1.在POM.xml文件下添加如下代码:注意:version.confi ...
- 《Android深度探索(卷1):HAL与驱动开发》——6.4节使用多种方式测试Linux驱动...
本节书摘来自异步社区<Android深度探索(卷1):HAL与驱动开发>一书中的第6章,第6.4节使用多种方式测试Linux驱动,作者李宁,更多章节内容可以访问云栖社区"异步社区 ...
最新文章
- linux安装后硬盘变小,Linux硬盘安装步骤
- Problem 2238 Daxia Wzc's problem 1627 瞬间移动
- .net 出现的异常
- 企业微信_获取access_token
- LabVIEW连接MySQL数据库
- 交互式python解释器_从python脚本中调用python交互式解释器
- android自定义指针,Android实现HID鼠标的指针自定义
- StarUML3.0.2——超好用的UML画图工具推荐
- 网络信息安全之纵深防御
- train,dev,test数据集划分
- 第二重要极限公式推导过程_机器学习——一文详解逻辑回归「附详细推导和代码」...
- Pytorch使用CPU
- 怎么用按键精灵快速开发计算距离自己最近的怪物/包裹/金矿坐标的脚本
- QCC512X--QCC514X--QCC302X--QCC304X烧录工具
- 9.22生日——随笔
- java 最后的异常_关于java:异常处理尝试没有catch,但最后
- 微博爬虫——爬取指定范围内所有帖子包含的定位信息的方法
- python第三方库——xlrd和xlwt操作Excel文件学习
- QT--多TCP客户端
- 做个全栈工程师真的好吗?