maven的两种可运行jar打包方式。1、内置依赖,2、外部依赖

maven打可运行jar包的两种方式


maven常用的普通打包方式分为pom,jar,war等,至于这些打包类型就不介绍啦。


如果不进行特殊配置,那么打包出来的jar包是不可运行的。只能当作普通依赖包使用。


下面就介绍两种maven打可运行jar包的方式:


方式一:内置打包法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
< plugins >
             <!-- 内置打包法 -->
             < plugin >
                 < groupId >org.apache.maven.plugins</ groupId >
                 <!-- 用这个maven打包插件 -->
                 < artifactId >maven-shade-plugin</ artifactId >
                 < version >2.3</ version >
                 < executions >
                     < execution >
                         < phase >package</ phase >
                         < goals >
                             < goal >shade</ goal >
                         </ goals >
                         < configuration >
                             <!-- 默认值为true.注意这个属性,如果你用这个插件来deploy,或者发布到中央仓库,这个属性会缩减你的pom文件,会把你依赖的<dependency>干掉 -->
                             < createDependencyReducedPom >false</ createDependencyReducedPom >
                             < transformers >
                                 < transformer
                                     implementation = "org.apache.maven.plugins.shade.resource.AppendingTransformer" >
                                     < resource >META-INF/spring.handlers</ resource >
                                 </ transformer >
                                 < transformer
                                     implementation = "org.apache.maven.plugins.shade.resource.AppendingTransformer" >
                                     < resource >META-INF/spring.schemas</ resource >
                                 </ transformer >
                                 < transformer
                                     implementation = "org.apache.maven.plugins.shade.resource.ManifestResourceTransformer" >
                                     <!-- 这个是你的程序入口文件 -->
                                     < mainClass >com.alibaba.dubbo.container.Main</ mainClass >
                                 </ transformer >
                             </ transformers >
                         </ configuration >
                     </ execution >
                 </ executions >
             </ plugin >
             < plugin >
                 < groupId >org.apache.maven.plugins</ groupId >
                 < artifactId >maven-resources-plugin</ artifactId >
                 < version >2.4</ version >
                 < configuration >
                     <!-- 设置字符编码集 -->
                     < encoding >UTF-8</ encoding >
                 </ configuration >
             </ plugin >
         </ plugins >


上面使用maven install之后即可得到一堆文件。


/target/目录里面找一下,即可找到一个<你的项目名>.jar


这个包比较大(你的依赖包+实体类=总大小),可以直接运行


运行例子:java -jar 文件路径/<你的项目名>.jar



方式二:使用外部依赖包法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
< plugins >
             <!-- 打包jar文件时,配置manifest文件,加入lib包的jar依赖 -->
             < plugin >
                 < groupId >org.apache.maven.plugins</ groupId >
                 < artifactId >maven-jar-plugin</ artifactId >
                 < configuration >
                     < classesDirectory >target/classes/</ classesDirectory >
                     < archive >
                         < manifest >
                             < mainClass >com.alibaba.dubbo.container.Main</ mainClass >
                             <!-- 打包时 MANIFEST.MF文件不记录的时间戳版本 -->
                             < useUniqueVersions >false</ useUniqueVersions >
                             < addClasspath >true</ addClasspath >
                             < classpathPrefix >lib/</ classpathPrefix >
                         </ manifest >
                         < manifestEntries >
                             < Class-Path >.</ Class-Path >
                         </ manifestEntries >
                     </ archive >
                 </ configuration >
             </ plugin >
             < plugin >
                 < groupId >org.apache.maven.plugins</ groupId >
                 < artifactId >maven-dependency-plugin</ artifactId >
                 < executions >
                     < execution >
                         < id >copy-dependencies</ id >
                         < phase >package</ phase >
                         < goals >
                             < goal >copy-dependencies</ goal >
                         </ goals >
                         < configuration >
                             < type >jar</ type >
                             < includeTypes >jar</ includeTypes >
                             < useUniqueVersions >false</ useUniqueVersions >
                             < outputDirectory >
                                 ${project.build.directory}/lib
                             </ outputDirectory >
                         </ configuration >
                     </ execution >
                 </ executions >
             </ plugin >
         </ plugins >

上面使用maven install之后即可得到一堆文件。


/target/目录里面找一下,和上面不一样的是,你会发现<你的项目名>.jar没那么大。


而且还会有一个文件夹叫lib,而这个lib文件夹内全是你的依赖jar包


那么在使用的时候,<你的项目名>.jar会去加载外部的lib里面的jar包。


在部署项目的时候呢,你需要把lib文件夹和<你的项目名>.jar一起拷贝去使用


注意:两个需要是同目录下噢


运行例子:java -jar 文件路径/<你的项目名>.jar

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值