转:http://www.cnblogs.com/justinzhang/p/4983633.html
一个Eclipse的工程,在pom中配置了若干依赖,需要将pom中所有的依赖全部打包进一个jar包中,可以选择的方案有maven-assembly-plugin和fatjar。以前采用fatjar进行打包,但是fatjar有不少问题,
1. 最近一次更新是在09年,无法支持新版本的eclipse。
2.支持最高的jdk版本是1.7
3. 打包速度慢(不是一般的慢)
4. 打成的jar包体积略大。
下面是一个Eclipse的工程,其中含有不少的maven依赖包:
采用export成runnable jar包的方式是行不通的,正确做法是在工程的pom.xml文件中配置maven-assembly-plugin,pom.xml的配置如下:
4.0.0 com.cetc.di hdfs 1.0 jar hdfs http://maven.apache.org UTF-8 1.8 maven-compiler-plugin 2.3.2 1.8 1.8 maven-assembly-plugin jar-with-dependencies com.cetc.di.App make-assembly package single log4j log4j 1.2.17 junit junit 3.8.1 test org.springframework.data spring-data-hadoop 2.2.1.RELEASE
执行maven4MyEclipse->Update Project…
最后执行Run as->Maven build..->Select..->选择package目标。
目标执行后,可以在target目录下,找到生成的jar包:
使用Java Decompiler可以看到打包后,jar包的内容如下:
PS.在这个打包的过程中,还发现了一个和Hadoop配置相关的问题,将在中介绍。