把Maven项目连同其依赖jar包一同打成jar包,并运行入口类

来源:互联网 发布:php短信平台源码 编辑:程序博客网 时间:2024/05/21 15:42

需求:

在我本地的电脑上存在一个maven工程,在pom文件中依赖了一些第三方jar包。现在需要把工程打成jar包,然后放到linux服务器中运行。

因此i,现在就需要在打jar包的同时既要指定运行该jar包的入口类,又要连同第三方jar包一块打成jar包。

目录:

1.jar包和war包的区别;

2.package命令打jar包的两种方式:

2.1.jar-plugin和dependency-plugin配置

2.2.jar-plugin、assembly-plugin以及assembly所需的配置文件

一、jar包和war包的区别

1.1、jar包

当电脑没有tomcat等web容器,只配置了java环境,支持java的doc命令时(就是cmd黑窗口中的命令),可以使用命令:
java -jar jar包名称 
来运行jar包。当然,此时运行的jar包中必须有一个main方法,并且生成jar包的时候,把这个main方法所在的类作为了入口类

1.2、war包

当电脑上有tomcat等web容器时,可以把工程打成war包,然后将war包放入tomcat服务器中,tomcat将会自动解析war包,并执行。

1.3区别

如果仔细看上面的介绍的话,你会发现:

执行jar包——执行的就是普通的java工程(是通过main方法来执行的);

执行war包——执行的是web工程,不需要指定入口类。


二、通过package命令打jar包

maven是支持将当前工程打成jar包的,只不过需要在pom文件中加入一些配置,确切的来说,应该是一些maven自带并支持的一些插件(个人这么理解)。

2.1.jar-plugin和dependency-plugin配置

通过jar-plugin和dependency-plugin,使用package命令或者是mvn:install命令,会把当前工程打成jar包,同时相关的第三方依赖会被放入一个lib包中。<注意,需要把工程的打包方式改成jar>

需要有两处配置:


2.1.1、将工程打成jar包(如下代码可以直接复制使用,但是注意入口类的指向需要更改)



2.1.2、将工程需要的第三方依赖包抽出来,放在lib文件夹下(如下代码可以直接复制使用)



完整下过如下:


2.1.3、pom文件配置完成后,执行Run as —— maven build.. ,点开后,输入package命令





2.1.4、执行成功后,会在target目录下生成一个jar包和一个lib文件夹



2.1.5、将lib文件夹和jar包一起放在linux服务器上,注意二者需要在同一目录下

2.1.6、执行jar包

在linux系统中切换路径到lib文件夹和jar包所在文件夹,然后执行:java -jar ls-msao-raiscom-0.0.1-SNAPSHOT.jar  敲起enter 执行完成

2.1.7、注意

生成的jar包名称是你maven工程的artifactId+version,所以不用纠结名称


2.2.jar-plugin、assembly-plugin以及assembly所需的配置文件(推荐)

通过jar-plugin、assembly-plugin可以将项目jar包打成压缩包的方式,比如zip,tar等方式,但是需要多添加一个assembly的配置文件,在这个文件中指定将jar包打成什么样类型的压缩包。

压缩包解压后,会生成项目打成的jar包,lib依赖文件,以及assembly的配置文件。

话不多说,上代码:

2.2.1、jar-plugin:将工程打成jar包,需要指定jar包的入口类



2.2.2、assembly-plugin:打包依赖jar包


2.2.3、assembly的配置文件

<directory>${project.basedir}\resources</directory>


2.2.4、如下是assembly的目录:



2.2.5、带配置完成后,执行打包命令即可。