java打包插件,Maven常用打包插件的使用

大家好,我是IT修真院深圳分院第01期学员,一枚正直纯洁善良的web程序员。今天给大家分享一下,修真院官网JAVA(职业)任务2的知识点——Maven常用打包插件的使用。

1.背景介绍

打包,正式说法是构建项目软件包,具体说就是将项目中的各种文件,比如源代码、编译生成的字节码、配置文件、文档,按照规范的格式生成归档,最常见的是JAR包和WAR包。

2.知识剖析

2.1 关于package

任何一个Maven项目都需要定义POM元素packaging(如果不写则默认值为jar)。该元素决定了项目的打包方式。实际的情形中,如果你不声明该元素,Maven会帮你生成一个JAR包;如果你定义该元素的值为war,那你会得到一个WAR包;如果定义其值为POM(比如是一个父模块),那什么包都不会生成。

2.2 常规打包

maven项目常规的四种包:jar、war、source和javadoc,maven提供了对应的插件:maven-jar-plugin、maven-war-plugin、maven-source-plugin和maven-javadoc-plugin。

2.3 可执行jar包

Maven默认生成的jar包只包含了编译生成的.class文件和项目资源文件,而要得到一个可以直接在命令行通过java命令运行的jar文件,还要满足两个条件:

1)jar包中的/META-INF/MANIFEST.MF元数据文件必须包含Main-Class信息。

2)项目所有的依赖都必须在Classpath中。

有三种生成方式:

1)使用jar和dependency插件

2)使用shade插件

3)使用assembly插件

2.3 项目分发包

实际的软件项目常常会有更复杂的打包需求,例如我们可能需要为客户提供一份产品的分发包,这个包不仅仅包含项目的字节码文件,还得包含依赖以及相关脚本文件以方便客户解压后就能运行,此外分发包还得包含一些必要的文档。

assembly插件支持各种打包文件格式,包括zip、tar.gz、tar.bz2等等,通过一个打包描述文件,能够帮助用户选择具体打包哪些文件集合、依赖、模块、和甚至本地仓库文件,每个项的具体打包路径用户也能自由控制。assembly.xml文件的id对应了其最终生成文件的classifier。formats定义打包生成的文件格式。dependencySets用来定义选择依赖并定义最终打包到什么目录。fileSets允许用户通过文件或目录的粒度来控制打包。

3. 常见问题

实际使用

4. 解决方案

在pom文件中配置插件

5. 编码实战

6. 扩展思考

assembly插件对包含spring框架的项目打可运行jar包会报错

7. 参考文献

8. 更多讨论

其他格式的项目分发包

maven常用打包插件_腾讯视频

提问:用assembly插件打成分发包,里面的项目可以用IDE打开直接运行吗?

答:可以

提问:可执行jar包中的MANIFEST.MF文件可以手动添加主类信息吗?

答:我用shade插件试了下,是可以的,但是限制比较多。首先在pom中shade插件配置中注释掉主类入口配置,然后运行打包,将打出来的jar包用WinRAR打开,直接用sublime编辑MANIFEST.MF文件,添加主类信息然后保存,关闭jar包,运行成功。需要注意的是不能解压jar包再编辑,否则会报错,应该是解压会破坏关联关系。

提问:打包时怎样跳过测试?

答:在configuration标签中加上true即可,版本不同可能写法会有变化,或者用true。

鸣谢

感谢大家观看

------------------------------------------------------------------------------------------------------------------------

今天的分享就到这里啦,欢迎大家点赞、转发、留言、拍砖~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值