用idea打jar包非常方便

我们先看看实例项目

idea普通的java项目怎么打jar包 idea 打jar包_java代码


这个项目里包括

一个数据文件,位于’data/data’

一个自定依赖库,位于’lib/’下

还有一个主java文件,位于‘src/MyClass.jar’

(如何添加jar包请访问Intellij IDEA 添加jar包的三种方式)

然后我们开始打jar包

1.首先打开project structure

idea普通的java项目怎么打jar包 idea 打jar包_jar_02

2.然后按下图顺序点击

idea普通的java项目怎么打jar包 idea 打jar包_jar_03

3.对于弹出的界面有两种打jar包的方式

idea普通的java项目怎么打jar包 idea 打jar包_jar_04


最上面的module指的就是相对哪个项目打包

第二行的main class 就是指定主类

下面的JAR files from libraries有两个选项,这个是用来决定如何处理我们自己添加的第三方依赖库的,比如我的项目里包含了java链接mysql的依赖包

第一个选项extract to …,指的是,将全部依赖包和你自己写好的java代码,都打进一个包里,也就是最终只会输出一个jar包

第二个选项copy to the output …,指的是,将依赖包和自己写好的代码打到不同的jar包里,并且这些jar包的依赖联系是根据一个自动生成的anifest文件联系起来的,例如,如果项目有两个依赖jar文件,那么最终输出的jar一共有三个,分别自己写的java代码组成的一个jar和另外两个依赖jar

假设我们选第一个extract to target JAR,点击ok

3.jar内文件设置

之后我们便来到了关键的最难以看明白的一步

下图中,最上面的name指的是这个Aritifacts的名称(注意这不是输出jar的名称)

中间的Output directory指的是输出的路径

图中左边红框,即区域1代表的是最终输出的东西是什么样的

可以看到区域1里有一个jar_test.jar,这个就是基于我们写的代码输出的一个jar包,可以改名字哦,右键‘jar_test.jar’可以看到rename,点击就可以改名字了

这个jar包里还有两行,第一行指的是“从xxx.jar中抽取的东西”,因为之前我们选的是extract to target JAR;第二行内容指的是,我们的java代码编译后的输出,也就是我们写的各种package和class啦。

在区域1选中jar包的情况下,图最下面会有我们打jar包的manifest文件相关信息,没错,不管以哪种方式打jar包,manifest文件都会生成

idea普通的java项目怎么打jar包 idea 打jar包_jar包_05

区域2是可用元素,就是说目前还可以把什么东西添加到jar包里,那个lib是我自己设置的一个库,不懂的话可以忽略,目前没什么可以添加的,我们来做个实验

idea普通的java项目怎么打jar包 idea 打jar包_java代码_06

于是就变成了下图这样,左边的东西跑到右边了,加回来的方式有两种,要么双击跑到右边的’jar_test’ complie output,要么点击那个加号,然后点击module output,就不截图了

idea普通的java项目怎么打jar包 idea 打jar包_jar_07

好我们再把那个“Extracted ‘mysql-…’”给“减掉”,操作与上面一样,选中之后点击“-”,会发现这个东西没有跑到右边去,如下图所示,别慌

idea普通的java项目怎么打jar包 idea 打jar包_jar_08

点击加号后选中Extracted Directory

idea普通的java项目怎么打jar包 idea 打jar包_jar包_09


会出现如下所示的一个对话框,沿着路径自己找到那个被删除的jar包,点击OK,他就回来了,以这种方式我们还可以添加其他的jar包

idea普通的java项目怎么打jar包 idea 打jar包_jar包_10

4.别急,如果想要把数据打进去怎么办

可以看到我们这个jar包里现在并没有上面用到的数据文件,接下来需要把data目录下的文件打入jar包,操作与上面类似,点击“+”后,选择Directory Content,意思就是把某个文件夹里的全部内容打到jar里

idea普通的java项目怎么打jar包 idea 打jar包_jar包_11

在弹出的框里找到目标文件夹并选中,注意这时选中的是文件夹,点击OK就可以了

idea普通的java项目怎么打jar包 idea 打jar包_java代码_12

5.大功告成

点击下面的Apply,或者OK

然后点击导航栏中的Build,然后选中Build Aritifacts

idea普通的java项目怎么打jar包 idea 打jar包_jar包_13

出现如下这么个东西,左边的jar_test:jar,就是这个artifacts的名字,上面我们提到过,第一次点Build,再次编译点rebuild

idea普通的java项目怎么打jar包 idea 打jar包_jar_14

之后就可以在artifact中设置对应的路径找到我们打好的jar包了

6.注意
在步骤3中,如果我们选中的是“copy to the output…”的话,其他的设置也是大同小异,可以自己尝试
另外如果某个module要重新设置或者新增artifacts的话,有时候会报错“MANIFEST.MF already exists in VFS”,要把上一次生成的MANIFEST.MF文件彻底删除就行,不仅要丢进回收站后,还要在回收站内删除