Maven构建可执行jar包:包含依赖及问题解决
版权申诉
127 浏览量
更新于2024-09-11
收藏 62KB PDF 举报
"Maven如何构建可执行的jar包(包含依赖jar包)"
在Java开发中,Maven是一个强大的项目管理工具,可以帮助开发者自动化构建、管理和部署项目。当我们需要创建一个可执行的jar包,其中包含了所有依赖的第三方库时,Maven提供了相应的插件来实现这一目标。本文将详细介绍如何使用Maven的maven-assembly-plugin或maven-shade-plugin来构建这样的jar包。
首先,我们的目标是构建一个独立的jar文件,这个jar文件不仅包含我们自己的源代码,还应该包含所有必要的依赖库,以便可以直接通过`java -jar`命令运行。在描述中提到,这个过程可能会遇到一些问题,如配置不生效、运行异常等,但通过正确的方法和配置,这些问题都可以得到解决。
1. maven-assembly-plugin:这是Maven的一个插件,用于创建项目的归档文件,如jar、tar.gz等。要构建包含依赖的可执行jar,我们需要在pom.xml中添加对应的配置:
```xml
<build>
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<archive>
<manifest>
<mainClass>com.delon.main.Test</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
```
在这个配置中,`mainClass`属性指定了程序的主类,`jar-with-dependencies`描述符会把所有依赖打包进jar。
2. 遇到的问题及解决方法:
- 问题1:修改pom.xml后不生效。这通常是因为IDEA没有自动更新项目配置。可以通过点击右下角的"import changes"或启用自动导入功能解决。
- 问题2:使用`java -jar`运行报`NoClassDefFoundError`。这可能是因为指定的`mainClass`不正确,应确保指定的类名与包含`main`方法的类完全匹配,包括全限定名。
- 问题3:运行时报缺少依赖错误。这是因为jar包中并未包含所有必需的依赖。使用上述maven-assembly-plugin的配置可以解决这个问题。
3. 构建步骤:
- 编写包含`main`方法的可执行类。
- 在命令行中执行`mvn package`,这会根据pom.xml中的配置打包项目。
- 使用`java -jar test.jar`来运行生成的jar包。
除了maven-assembly-plugin,还可以使用maven-shade-plugin,它提供了更多自定义选项,例如重命名和重组依赖包,以避免类冲突。配置方法类似,只是将插件替换为maven-shade-plugin,并设置相应的配置项。
通过正确配置Maven的插件,我们可以方便地构建包含所有依赖的可执行jar包,从而简化项目的部署和运行流程。在实际操作中,遇到问题要善于查阅文档和在线资源,解决问题并积累经验。
点击了解资源详情
点击了解资源详情
点击了解资源详情
2014-04-23 上传
2020-08-18 上传
2018-10-25 上传
2023-03-21 上传
2018-08-17 上传
2020-08-28 上传
weixin_38655496
- 粉丝: 5
- 资源: 932
最新资源
- MATLAB实现小波阈值去噪:Visushrink硬软算法对比
- 易语言实现画板图像缩放功能教程
- 大模型推荐系统: 优化算法与模型压缩技术
- Stancy: 静态文件驱动的简单RESTful API与前端框架集成
- 掌握Java全文搜索:深入Apache Lucene开源系统
- 19计应19田超的Python7-1试题整理
- 易语言实现多线程网络时间同步源码解析
- 人工智能大模型学习与实践指南
- 掌握Markdown:从基础到高级技巧解析
- JS-PizzaStore: JS应用程序模拟披萨递送服务
- CAMV开源XML编辑器:编辑、验证、设计及架构工具集
- 医学免疫学情景化自动生成考题系统
- 易语言实现多语言界面编程教程
- MATLAB实现16种回归算法在数据挖掘中的应用
- ***内容构建指南:深入HTML与LaTeX
- Python实现维基百科“历史上的今天”数据抓取教程