IDEA打包项目模块生成jar包

IDEA打包项目模块生成jar包

首先,一个完整的jar包至少需要包含两个部分:MANIFEST.MF(标明了主启动类等元数据)和你编写的class,如下图所示:
IDEA打包项目模块生成jar包
MANIFEST.MF包含在META-INF文件夹中,另外一个目录则是根据你的pakage生成的,里面包含了你写的所有类。下面逐步介绍IDEA打包jar的步骤:
1.idea中File → ProjectSetting;
IDEA打包项目模块生成jar包
2.切换到Artifacts页面,点击“+”号,选择JAR→From modules with dependencie…:
IDEA打包项目模块生成jar包
3.选择main class,然后选择copy to the output directory and link via manifest,点击ok;此时如果提示META-INF目录已存在,去把这个目录删了就好。
IDEA打包项目模块生成jar包
4.然后会出现下面这个界面。注意画圈的地方就是实际打包出来的东西的结构,可以看到会生成一个jar包,jar包里面包含一个‘dockerdemo’ compile output。这个‘dockerdemo’ compile output就是需要打包的‘dockdemo’模块的编译结果,也就是class文件的目录。结合我一开始说的一个jar包需要包含的东西,显然这个打包出来后是运行不了的,因为缺少META-INF文件夹目录。
IDEA打包项目模块生成jar包
5.出现这个情况的原因是idea没有自动把META-INF目录添加到输出中,于是需要手动添加一下。鼠标选中‘dockerdemo.jar’(这是我项目的名字)这一级,右键‘Create Directory’,目录名键入"META-INF",OK。会在输出的jar包里添加这个目录:
IDEA打包项目模块生成jar包
6.但是META-INF目录中还没有我们需要的MANIFEST.MF文件,右键META-INF目录,选择‘Add copy of’→directory content,选择第三步中“Directory for META-INF/MANIFEST.MF"栏中填写的目录(默认是src/main/java目录,maven结构的项目的话)下的META-INF目录。(因为其实通过第三步后,IDEA会在这个目录下生产META-INF目录,且在这个目录下生成正确的MANIFEST.MF文件,idea只是没有把这个目录添加到输出的jar包中,或许是我不会操作。我们要做的就是把这个目录添加到输出的jar包中)。
IDEA打包项目模块生成jar包
7.搞定后,我们的输出结构是这样的。(其实到这一步有很多种方式,但是不管怎么弄,一定要保证输出的jar包结构下至少包含META-INF目录和你的程序目录!!)
IDEA打包项目模块生成jar包
8.点击ok,回到idea主界面。点击Build→Build Artifacts…→选中你的模块→Build。等待输出结束了,可以在out目录中看到你的jar包。切换到jar包目录,运行 java -jar xxx.jar来运行你的程序把!