This commit is contained in:
luoxiang 2019-05-20 23:49:01 +08:00
parent a38b7cce3d
commit 5e4f55a09c

View File

@ -1,12 +1,24 @@
# 大数据应用常用打包方式
<nav>
<a href="#一简介">一、简介</a><br/>
<a href="#二mvn-package">二、mvn package</a><br/>
<a href="#三maven-assembly-plugin插件">三、maven-assembly-plugin插件</a><br/>
<a href="#四maven-shade-plugin插件">四、maven-shade-plugin插件</a><br/>
<a href="#五使用非Maven仓库中的Jar">五、使用非Maven仓库中的Jar</a><br/>
<a href="#六排除集群中已经存在的Jar">六、排除集群中已经存在的Jar</a><br/>
<a href="#七使用建议">七、使用建议</a><br/>
</nav>
## 一、简介
在提交大数据作业到集群中运行时通常都需要先将项目打成Jar包。Java项目通常都采用Maven进行构建常用的打包方式有以下三种
在提交大数据作业到集群中运行时通常都需要先将项目打成Jar包。Java项目通常都采用Maven进行构建Maven提供的常用打包方式及插件有以下四种:
- 第一种不加任何插件直接使用mvn package打包
- 第二种使用maven-assembly-plugin插件进行打包
- 第三种使用maven-shade-plugin插件进行打包。
- 不加任何插件直接使用mvn package打包
- 使用maven-assembly-plugin插件
- 使用maven-shade-plugin插件
- 使用maven-jar-plugin和maven-dependency-plugin插件
以下分别进行详细的说明。
@ -104,7 +116,7 @@ assembly.xml文件内容如下
## 四、maven-shade-plugin插件
`maven-shade-plugin``maven-assembly-plugin`功能更丰富比如你的工程依赖很多的JAR包而被依赖的JAR又会依赖其他的JAR包这样,当工程中依赖到不同的版本的 JAR时并且JAR中具有相同名称的资源文件时shade插件会尝试将所有资源文件打包在一起时而不是和assembly一样执行覆盖操作。
`maven-shade-plugin``maven-assembly-plugin`功能更为强大比如你的工程依赖很多的JAR包而被依赖的JAR又会依赖其他的JAR包这样,当工程中依赖到不同的版本的 JAR时并且JAR中具有相同名称的资源文件时shade插件会尝试将所有资源文件打包在一起时而不是和assembly一样执行覆盖操作。
### 4.1 基本配置
@ -247,3 +259,13 @@ Strom官方文档 Running Topologies on a Production Cluster 章节:
通常使用`maven-shade-plugin`就能够完成大多数的打包需求,其配置简单且适用性最广,因此建议使用此方式。
## 参考资料
关于Maven各个插件的详细配置可以查看其官方文档
+ maven-assembly-plugin : http://maven.apache.org/plugins/maven-assembly-plugin/
+ maven-shade-plugin : http://maven.apache.org/plugins/maven-shade-plugin/
+ maven-jar-plugin : http://maven.apache.org/plugins/maven-jar-plugin/
+ maven-dependency-plugin : http://maven.apache.org/components/plugins/maven-dependency-plugin/
关于maven-shade-plugin的更多配置也可以参考该博客 [maven-shade-plugin 入门指南](https://www.jianshu.com/p/7a0e20b30401)