详解用maven将dubbo工程打成jar包运行
作者:sf4y 时间:2023-10-20 04:34:42
maven打包方式
使用maven打包插件maven-jar-plugin
在pom.xml
文件最后新增以下代码。
maven-dependency-plugin
是指将依赖的jar包复制到指定目录
maven-resources-plugin
将依赖的resources复制到指定目录
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.6</version>
<configuration>
<archive>
<manifest>
<!-- 是否依赖外部jar包 -->
<addClasspath>true</addClasspath>
<!-- 依赖外部jar包路径 -->
<classpathPrefix>lib/</classpathPrefix>
<!-- 启动函数 --> <mainClass>com.alibaba.dubbo.container.Main</mainClass>
</manifest>
</archive>
<!-- 打包之后输出目录 -->
<outputDirectory>${project.build.directory}/maven-archiver</outputDirectory>
<!-- 剔除已打包的配置文件 -->
<excludes>
<exclude>*.*</exclude>
<exclude>config/*</exclude>
<exclude>config/tencent/*</exclude>
<exclude>META-INF/spring/*</exclude>
</excludes>
</configuration>
</plugin>
<!-- 拷贝依赖的jar包到lib目录 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.8</version>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>
${project.build.directory}/maven-archiver/lib
</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
<!-- 拷贝依赖的资源文件包到resources目录 -->
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<executions>
<execution>
<id>copy-resources</id>
<phase>package</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/maven-archiver/resources</outputDirectory>
<resources>
<resource>
<directory>${basedir}/src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
运行jar包方式
打包之后的目录结构
包含了class文件,以及需要的配置文件信息(不包含excludes的配置文件)
在MANIFEST.MF
中包含了运行需要的信息
Class-Path: lib/commons-beanutils-1.8.3.jar lib/commons-betwixt-0.8.jar
...
Main-Class: com.alibaba.dubbo.container.Main
java -jar
启动命令
java -jar 执行命令时,会用到目录META-INFMANIFEST.MF中Main-Class的参数,这个是在打包的时候指定函数的入口。
java -jar x-0.0.1-SNAPSHOT.jar
java -cp
启动命令
java -cp .:x-0.0.1-SNAPSHOT.jar packname.mainclassname
因为我工程中需要引用外部的resources文件所以我通常用这种方式启动
配置文件地址是绝对路径
java -cp /Users/username/resources:dubbo-service-1.0.jar com.alibaba.dubbo.container.Main
-cp
和-classpath
是相同的效果
java -cp 是指定运行所依赖其他类的路径,通常是类库、jar 包之类,多个依赖在Window
上用分号";"隔开,linux
上用":"隔开。
表达式支持通配符
java -cp .:/Users/username/*.jar packname.mainclassname
打成一个jar包
如果需要将依赖的jar包都达到一个jar包中运行,可以使用maven-shade-plugin
这个插件。
这个插件的功能主要是:将依赖的jar包打包到当前jar包,并且在打包的时候把类重命名,可以解决jar包的多版本冲突,具体可以查询官方插件文档。
参考文档
maven官方插件文档
来源:https://segmentfault.com/a/1190000019025385
标签:maven,dubbo,jar包
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
Android ProgressBar进度条使用详解
2023-01-22 00:53:38
![](https://img.aspxhome.com/file/2023/3/138293_0s.png)
Java多线程模拟银行系统存钱问题详解
2023-11-28 22:13:32
![](https://img.aspxhome.com/file/2023/4/60254_0s.jpg)
C#字符串String及字符Char的相关方法
2023-10-26 03:05:37
springboot使用mybatis开启事务回滚
2022-09-10 05:15:55
![](https://img.aspxhome.com/file/2023/9/87369_0s.png)
Mybatis Plus select 实现只查询部分字段
2022-07-23 18:51:32
![](https://img.aspxhome.com/file/2023/9/61279_0s.jpg)
HelloSpringMVC注解版实现步骤解析
2021-07-21 01:58:42
Java实现微信发红包
2021-07-22 05:11:07
![](https://img.aspxhome.com/file/2023/1/67111_0s.jpg)
Android中TimePicker与DatePicker时间日期选择组件的使用实例
2023-08-07 01:35:15
![](https://img.aspxhome.com/file/2023/0/84740_0s.jpg)
springboot2中session超时,退到登录页面方式
2022-12-23 03:30:14
Java中不可或缺的关键字volatile详析
2023-07-22 12:11:29
解决MyBatis @param注解参数类型错误异常的问题
2023-12-01 06:41:45
Java的StringBuilder在高性能场景下的正确用法
2021-11-23 17:57:01
C#中应用程序集的装载过程详解
2023-03-30 19:06:05
![](https://img.aspxhome.com/file/2023/5/68065_0s.png)
Spring Boot整合JWT的实现步骤
2022-07-17 04:48:58
![](https://img.aspxhome.com/file/2023/3/132073_0s.png)
c#通过进程调用cmd判断登录用户权限代码分享
2021-07-24 00:53:26
Android 自定义View实现任意布局的RadioGroup效果
2021-08-07 16:20:24
![](https://img.aspxhome.com/file/2023/2/128992_0s.gif)
Mybatis拦 截 器实现数据权限的示例代码
2023-11-19 20:15:04
2022最新Java泛型详解(360度无死角介绍)
2022-03-08 15:13:42
![](https://img.aspxhome.com/file/2023/0/108440_0s.jpg)
Java并发框架:Executor API详解
2021-10-31 14:30:28
c# 使用OpenCV识别硬币
2021-12-18 15:09:13
![](https://img.aspxhome.com/file/2023/2/119552_0s.png)