暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

IDEA之生成和部署JAR包

基础技术研究 2022-09-16
548

我们开发项目的时候会使用到各种各样的JAR包,如何利用IDEA生成所需JAR包就尤为重要。本文主要讲述如何利用IDEA配置相关参数,生成我们想要的JAR包以及如何在linux系统部署JAR包。


01

  # 生成JAR包 #   

在IDEA打包JAR包之前,需要先对最终JAR包配置一些信息。打开IDEA,点击File-> Project Structure 如图:

弹出窗口后依次点击1.ArtiFacts->2.添加JAR包:

IDEA给出了两种添加JAR包的方法:

1. From modules with dependencies…打包 

使用这种方式,会将项目完整的一起打包。

1)选择本项目的主程序类,点击旁边文件夹图标会自动检索出所有主函数的类,自主选择自己所需要的主程序类即可。
2)extract to the target Jar:表示将依赖的三方JAR包打包到目标JAR包里面,通过这种方式打包的JAR包,最终只有一个JAR文件,这样打出来的JAR包大。如果使用的引用包过多,一般打出来的JAR包都会在100MB以上,部署上传服务器时也是比较麻烦的,本人不太建议选择这种方式。
copy to the output directory and link via manifest:将依赖的JAR包拷贝到某个路径下,并且通过mainifest进行链接。这种情况下依赖的第三方JAR包会以独立JAR包的方式存在,生成的JAR包和依赖的第三方JAR包会生成在同一目录。而且生成的JAR包不大,仅有几MB左右。这样我们迭代版本的时候,服务器上已经有依赖的第三方JAR包,只需将这个几MB的新生成JAR包上传部署即可,方便快捷。
3)Directry for META-INF/MAIFEST.MF:指定mainifest文件生成路径,如果上面选择了copy to the output directory and link via manifest,那么这个文件要确保和生成的jar包放在同一个目录下,一般使用默认路径即可。

以上配置选择之后,就会进入上图界面:

1)编辑生成JAR包的名称;

2)编辑生成JAR包的路径;

3)点击apply->ok,即可保存该JAR包生成的全部配置。

MAIFEST.MF文件:

该文件主要包含一些配置信息,主要是文件的版本,主函数的类外加所引用的JAR包等。

用途主要有两个:

1). Main-Class 指定程序的入口,这样可以直接用java -jar xxx.jar来运行程序。

2). Class-Path 指定jar包的依赖关系,class loader会依据这个路径来搜索class。


2. Empty打包 

使用这种方式进行打包,我们可以只将自己所需要的类进行打包,不需要打包整个项目,这样会使打出来的JAR包更加轻便。

上图即为用Empty打包的界面:

1)编辑生成JAR包的名称;

2)编辑生成JAR包的路径;

3)添加自己所需要打包的类(注:必须为.class文件);

4)自己创建或者使用已存在的MAIFEST.MF文件;

5)点击apply->ok,即可保存该JAR包生成的全部配置。

任选其中一种配置方式,并完成配置之后就可以生成我们所需要的JAR包。

点击Build->Build Artifacts..

找到自己配置的JAR包名称;

Build:第一次生成JAR包,选择Build生成一个新的JAR包;

Rebuild:之后我们修改了任意程序之后,就可以选择Rebuild来重新生成JAR包即可。



02

  # 部署JAR包 #    

部署JAR包之前要先安装好JAVA环境,配置JAVA环境变量。

以linux环境为例,因为我们生成JAR包时未将所有依赖包全部打入生成的JAR包中,所以我们将所有依赖包放到lib文件夹下,将lib文件夹与生成的JAR包放在同一目录,这样我们就可以把部署命令写到一个shell,如下图所示:

1)第一行是获取当前目录

2)第二行是获取所需部署JAR包绝对路径

3)第三行是遍历所需依赖包之后循环拼接在JAR包绝对路径后

4)第八行是设置一些JVM参数

5)第九行是设置垃圾回收参数和日志路径

6)第十行是部署JAR包

nohup是用于在系统后台不挂断地运行命令,退出终端不会影响程序的运行。

2>&1将标准错误输出重定向到标准输出,就是将项目的错误日志和正常输出日志都输出到后面的$MHOME/server.log,也就是输出到当前目录下的server.log文件。

最后一个&是让命令在后台进行。



03

  # 总结 #   

本文阐述了如何利用IDEA生成和部署JAR包,希望能在JAR包方面给大家一些帮助。

文章转载自基础技术研究,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论