使用maven创建可执行jar的步骤解析
167 浏览量
更新于2024-09-04
收藏 49KB PDF 举报
"本文将详细介绍如何使用Maven来生成一个可以直接执行的JAR文件。在不依赖外部库的情况下,通过配置Maven的maven-jar-plugin插件,我们可以创建一个包含主清单属性的JAR,使其能够直接通过`java -jar`命令执行。"
在Java开发中,Maven是一个非常流行的构建工具,它可以帮助我们管理项目依赖、构建工件等。当需要将一个Java项目打包成可执行的JAR文件时,通常需要确保JAR包含了运行所需的全部依赖,并且有一个正确的主清单属性(Main-Class),这样才能通过`java -jar`命令直接运行。
首先,创建一个简单的Java项目,只有一个包含主函数的类,例如名为`Xixi.java`的类,其中包含`public static void main(String[] args)`方法。项目的`pom.xml`文件应该至少包含以下基本配置:
```xml
<project>
<groupId>com.paxi</groupId>
<artifactId>xixi</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<name>xixi</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
</project>
```
然后,执行`mvn clean install`命令,Maven会生成一个JAR文件,但这个JAR文件可能无法直接运行,因为它缺少主清单属性。当你尝试使用`java -jar xixi-1.0-SNAPSHOT.jar`命令时,会收到错误提示:“xixi-1.0-SNAPSHOT.jar中没有主清单属性”。
要解决这个问题,我们需要在`pom.xml`中添加`maven-jar-plugin`插件,配置它来生成包含主清单属性的JAR文件。具体配置如下:
```xml
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.1.0</version>
<configuration>
<archive>
<manifest>
<mainClass>com.paxi.xixi.Xixi</mainClass> <!-- 替换为你的主类全名 -->
</manifest>
</archive>
</configuration>
</plugin>
</plugins>
</build>
```
这里,`<mainClass>`标签指定了程序的入口点,即包含`main`方法的类的全限定名。添加了这个配置后,再次执行`mvn clean install`,Maven会生成一个新的JAR文件,这次它应该包含了主清单属性。现在,你可以通过`java -jar xixi-1.0-SNAPSHOT.jar`来直接运行这个JAR文件,它将执行`Xixi`类中的`main`方法。
如果项目依赖了其他库,还需要使用`maven-assembly-plugin`或`maven-shade-plugin`来创建一个“fat”或“uber”JAR,它包含了所有依赖,以便在没有外部环境的情况下运行。不过,对于简单的无依赖项目,上述的`maven-jar-plugin`配置已经足够生成可执行的JAR文件了。
总结来说,通过正确配置Maven的maven-jar-plugin插件,开发者可以轻松地创建一个可以直接运行的JAR文件,这对于部署和分享小型Java应用程序非常方便。记得在配置插件时指定你的主类全名,这样Maven就能生成一个带有正确主清单属性的JAR,使得`java -jar`命令能够顺利执行。
121 浏览量
3434 浏览量
123 浏览量
6088 浏览量
1685 浏览量
5655 浏览量
17586 浏览量
3434 浏览量
589 浏览量

weixin_38553466
- 粉丝: 11
最新资源
- 64位WIN10下通过文件操作驱动USB警示灯技术分享
- Java图片上传功能实现教程
- 安装gcc 4.4.7-4.el6.x86_64软件包的方法与步骤
- 基于ASP.Net MVC和Ajax技术的高校管理系统
- Zachery Zbinden的学术网站:探索JavaScript领域
- 深入分析GMT0104-2021云服务器密码机技术规范
- Android 2.1版摄像机功能使用指南
- 注入辅助工具内部版:深度应用与优化
- 探索AGV自动引导小车在Solidworks中的应用
- Android文件存储实现日程安排应用解析
- React开发入门与项目脚本使用指南
- ANN7.8稳定版发布:性能提升,安全优化
- mina框架源码深度解析及安卓交互应用
- MATLAB源码实现GMDH自组织网络模型预测时间序列
- Python101研讨会代码挑战解析
- CSS3动画实现3D骰子滚动效果教程