一、背景
最近项目在做微服务的拆分,那么我们想让我们的容器启动更加的轻量级,所以我们选择放弃tomcat等容器,而是通过maven生成带有指定依赖的可执行jar包的方式进行处理,本文我将分享如何通过maven的maven-jar-plugin打包插件来进行生成目的可jar包。
二、原理以及实现步骤
1.原理,我们可以通过修改maven 打jar包的maven-jar-plugin插件的配置信息来生成我们需要的指定依赖的可执行jar包。
2.步骤:在项目的pom.xml文件中修改默认的jar插件
1 2 3 4 org.apache.maven.plugins5 maven-jar-plugin6 2.3.17 8 9 10 11 com.hafiz.Runner12 13 true14 15 bin/16 17 18 19 20 21
接着我们还要配置maven的maven-dependency-plugin插件把当前项目的所有依赖放到target目录下的lib文件夹下
1 2 org.apache.maven.plugins3 maven-dependency-plugin4 5 6 copy7 package8 9 copy-dependencies10 11 12 ${project.build.directory}/lib13 14 15 16
其中,${project.build.directory}表示默认的target文件夹。
我们通过上文的修改便完成了适用maven生成指定依赖的可执行jar包。
我们发现生成的manifest文件中已经设置好了Main-Class以及Class-Path,如下:
如果设置为false,则生成的manifest文件中不会声明依赖(即不会有Class-Path声明)
3.主类
1 packagecom.hafiz;2 3 /**4 * Desc:主类5 * Created by hafiz.zhang on 2021年05月31日.6 */7 public classRunner {8 public static voidmain(String[] args) {9 System.out.println("The Main Class Is Running....");10 }11 }
4.pom.xml
1 3 4.0.04 5 com.hafiz6 assembly-demo7 1.0-SNAPSHOT8 jar9 10 assembly-demo11 http://maven.apache.org12 13 14 UTF-815 4.2.6.RELEASE16 17 18 19 20 junit21 junit22 3.8.123 test24 25 26 org.springframework27 spring-core28 ${spring.version}29 30 31 org.springframework32 spring-beans33 ${spring.version}34 35 36 org.springframework37 spring-context38 ${spring.version}39 40 41 org.springframework42 spring-jdbc43 ${spring.version}44 45 46 org.springframework47 spring-test48 ${spring.version}49 50 51 org.springframework52 spring-aop53 ${spring.version}54 55 56 57 58 59 60 org.apache.maven.plugins61 maven-jar-plugin62 2.3.163 64 65 66 67 com.hafiz.Runner68 69 true70 71 bin/72 73 74 75 76 77 org.apache.maven.plugins78 maven-dependency-plugin79 80 81 copy82 package83 84 copy-dependencies85 86 87 ${project.build.directory}/lib88 89 90 91 92 93 94
我们现在进入生成的jar包所在的文件夹下,使用 java -jar xxx.jar来执行生成的jar包
到此我们就完成了如何使用maven的jar包生成插件来进行生成指定依赖的可执行jar包。