这里总结出用IDEA打包jar包的多种方式,之后的项目打包Jar包能够参考以下形式:java
maven-shade-plugin
打包maven-assembly-plugin
打包打开IDEA的file -> Project Structure
,进入项目配置页面。以下图:apache
点击Artifacts
,进入Artifacts
配置页面,点击 + ,选择以下图的选项。maven
进入Create JAR from Modules
页面,按照以下图配置。ide
src/main
目录下,新建一个resources
目录,将MANIFEST.MF
文件保存在这里面,由于若是用默认缺省值的话,在IDEA12版本下会有bug。点击OK
以后,出现以下图界面,右键点击<output root>
,点击Create Directory
,建立一个libs
,将全部的第三方JAR放进libs目录下。函数
成功以后,以下图所示:工具
放入以后,点击咱们要打成的jar的名字,这里面是kafka-cps.jar
,选择classpath进行配置。ui
编辑的结果以下:idea
这里将全部的jar都写在libs/
里面。点击OK
,回到配置页面。
同时还注意在配置页面,勾选build on make
spa
最后点击配置页面的OK
,完成配置。回到IDEA,点击Build->Build Artifacts
,选择build
.net
就会生成咱们须要的jar包。其位置在项目目录的out目录下/out/artifacts/kafka_cps_jar
。
下面放一个正确配置的清单文件内容
上面的打包过程实在是过于的繁琐,并且也没有利用到maven管理项目的特点。为此,咱们这里利用maven中的maven-shade-plugin
插件。在pom.xml
中,咱们加入以下的信息来加入插件。
<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方法,就要进行额外的配置,上面这么配置,不必定能执行成功。
具体能够参见maven插件。
在加入这段代码到pom.xml以后,咱们就能够用maven的命令去打包了。其指令以下:
mvn clean compile //清除以前target编译文件并从新编译 mvn clean package //对项目进行打包(由于配置过插件,因此jar包是可执行的) mvn clean install //安装项目,而后就可使用了
而后经过java -jar cps-1.0-SNAPSHOT.jar
运行。
若是使用IDEA的话,能够经过自带的maven管理工具代替执行上面的命令。以下图所示,依次点击蓝色的部分。
上面的方法,咱们还须要点击不少命令去打包。此次利用一个新的插件,能够打包更简单。一样,在pom.xml中加入以下代码。上文的maven-shade-plugin
插件代码能够删除。最好不要写2个插件代码。
<plugin> <artifactId>maven-assembly-plugin</artifactId> <version>2.4</version> <configuration> <descriptorRefs> <descriptorRef>jar-with-dependencies</descriptorRef> </descriptorRefs> <archive> <manifest> <mainClass>Main.Main</mainClass> </manifest> </archive> </configuration> <executions> <execution> <id>make-assembly</id> <phase>package</phase> <goals> <goal>single</goal> </goals> </execution> </executions> </plugin>
这里一样配置了一个manifest标签来配置Main函数的入口。而后经过以下指令来实现打包。
mvn assembly:assembly
若是使用IDEA的话,能够经过自带的maven管理工具代替执行上面的命令。以下图所示,点击蓝色的部分。
而后经过执行java -jar cps-1.0-SNAPSHOT-jar-with-dependencies.jar
运行。