-
Java Maven Fat Jar 详解
在这篇博客里面我们将详细地讲解如何利用maven来创造一个fat jar。可能大家对于fat jar的概念还不是很熟悉,没关系,在开始进一步的讲解之前我会跟你说明fat jar是什么的。另外本文的环境是 123 Maven 3.3.9JDK 1.8Joda-Time 2.5 大家根据相应的情况自己创建一个Maven项目。 什么是Fat Jar? 什么是Fat Jar?简单地说就是胖Jar呗!哈哈!就是说这个Jar所装的东西比一般的Jar要多嘛!一般地,我们通过maven的插件maven-jar-plugin所打包生成的jar都是只包含我们项目的源码的,它不包含我们所依赖的第三方库,这样就会导致一个问题,如果我们的第三方库不在CLASSPATH下面会怎样?当然是会出现java.lang.NoClassDefFoundError的问题咯!因此,我们需要使用一种方式,能使得项目所依赖的第三方库能够随着我们的项目源码一起被打包,这样我们就完全不用担心类找不到的问题啦!这就是Fat Jar的来历! 创建Maven项目 两种方式:通过命令行或者通过IDE生成。 (1). 通过命令行: 12 $ mvn archetype:generate -DgroupId=com.qinjiangbo -DartifactId=FatJar-DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false (2). 通过IDE生成,这里我用的IDEA 项目视图和主类 生成普通Jar 生成普通Jar我们可以使用maven-jar-plugin这个插件来打包。Maven配置代码如下: 12345678910111213141516 <build><finalName>fat-jar-example</finalName><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-jar-plugin</artifactId><configuration><archive><manifest><mainClass>com.qinjiangbo.App</mainClass></manifest></archive></configuration></plugin></plugins></build> 其中<mainClass>com.qinjiangbo.App</mainClass>就是指明了main函数的所在地。我们生成好的jar名为fat-jar-example.jar,在命令行打开项目的target目录: 123456789101112 # Richard at Richards-MacBook-Pro.local in ~/IdeaProjects/FatJar/target [23:28:14]→ jar tf fat-jar-example.jarMETA-INF/META-INF/MANIFEST.MFcom/com/qinjiangbo/com/qinjiangbo/App.classMETA-INF/maven/META-INF/maven/com.qinjiangbo/META-INF/maven/com.qinjiangbo/FatJar/META-INF/maven/com.qinjiangbo/FatJar/pom.xmlMETA-INF/maven/com.qinjiangbo/FatJar/pom.properties 很明显,这个jar包里面没有第三方库。我们来看看执行结果是什么? 1234567891011 # Richard at Richards-MacBook-Pro.local in ~/IdeaProjects/FatJar/target [23:28:21]→ java […]
-
Hello world!
Welcome to WordPress. This is your first post. Edit or delete it, then start writing!