💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。
-
推荐:「stormsha的主页」👈,「stormsha的知识库」👈持续学习,不断总结,共同进步,为了踏实,做好当下事儿~
-
专栏导航
- Python系列: Python面试题合集,剑指大厂
- Git系列: Git操作技巧
- GO系列: 记录博主学习GO语言的笔记,该笔记专栏尽量写的试用所有入门GO语言的初学者
- 数据库系列: 详细总结了常用数据库 mysql 技术点,以及工作中遇到的 mysql 问题等
- 运维系列: 总结好用的命令,高效开发
- 算法与数据结构系列: 总结数据结构和算法,不同类型针对性训练,提升编程思维
非常期待和您一起在这个小小的网络世界里共同探索、学习和成长。💝💝💝 ✨✨ 欢迎订阅本专栏 ✨✨
💖The Start💖点点关注,收藏不迷路💖📒文章目录
- Maven 编译构建可以执行的 Jar 包
- 一、项目结构
- 二、POM.xml 配置详解
- 1. 项目信息
- 2. 项目属性
- 3. 项目依赖
- 4. 构建配置
- 4.1 Maven 编译插件
- 4.2 Maven 组装插件
- 三、src.xml 配置详解
- 组装配置
- 四、构建可执行Jar包
- 五、总结
- 参考链接
Maven 编译构建可以执行的 Jar 包
在Java项目开发中,通过Maven进行项目构建和管理是一个非常普遍的选择。特别是当我们需要将项目打包成一个可以直接执行的Jar包时,Maven的能力显得尤为重要。本篇博文将结合一个实际的Maven配置实例,详细讲解如何通过Maven编译构建一个可以执行的Jar包。
一、项目结构
我们假设项目的目录结构如下:
demo/
├── pom.xml
└── src/└── main/└── resources/└── src.xml
二、POM.xml 配置详解
首先,我们来看一下pom.xml
的配置文件:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.maven.apache.org/POM/4.0.0 http://www.maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.storm</groupId><artifactId>demo</artifactId><version>v1</version><properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding></properties><dependencies><!-- 引入第三方依赖包 --><dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.8.21</version></dependency><!-- 引入本地系统依赖包 --><dependency><groupId>com.hundsun</groupId><artifactId>h5sdk</artifactId><version>${project.version}</version><scope>system</scope><systemPath>${pom.basedir}/lib/自己本地的jar包.jar</systemPath></dependency></dependencies><build><!-- 配置插件 --><plugins><!-- 配置 Maven 编译插件 --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.1</version><configuration><!-- 设置目标编译版本 --><target>${maven.compiler.source}</target><!-- 设置源代码版本 --><source>${maven.compiler.target}</source></configuration></plugin><!-- 配置 Maven 组装插件 --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-assembly-plugin</artifactId><version>2.4</version><configuration><archive><manifest><!-- 配置程序入口 --><addClasspath>true</addClasspath><mainClass>com.stormsha.demo.Main</mainClass></manifest><!-- 设置清单条目 --><manifestEntries><Class-Path>.</Class-Path></manifestEntries></archive><!-- 设置描述符引用 --><descriptorRefs><!-- 配置文件名后缀 --><descriptorRef>jar-with-dependencies</descriptorRef></descriptorRefs><!-- 设置最终生成的文件名 --><finalName>demo</finalName><!-- 不附加汇编 ID,设置为false时一定得设置最终生成的文件名,不要问为什么,问就是不知道 --><appendAssemblyId>false</appendAssemblyId></configuration><!-- 插件执行配置 --><executions><execution><!-- 执行 ID --><id>make-assembly</id><!-- 执行阶段 --><phase>package</phase><!-- 执行目标 --><goals><goal>single</goal></goals><configuration><!-- 指定自定义描述符,如果你只有构建一个jar包,描述符的位置一定得在执行配置中,不要在插件配置中--><descriptors><descriptor>src/main/resources/src.xml</descriptor></descriptors></configuration></execution></executions></plugin></plugins></build><!-- 配置阿里云镜像作为默认镜像 --><repositories><repository><id>aliyun-apache-snapshots</id><url>https://maven.aliyun.com/repository/apache-snapshots</url><releases><enabled>false</enabled></releases><snapshots><enabled>true</enabled></snapshots></repository></repositories>
</project>
1. 项目信息
在POM文件开头,我们定义了项目的基本信息,这些信息包括groupId
、artifactId
和version
。这些信息用于唯一标识项目。
2. 项目属性
在<properties>
标签中,我们定义了项目的编译和编码属性,包括Java编译版本和项目编码格式。
3. 项目依赖
在<dependencies>
标签中,我们引入了一个第三方依赖包hutool-all
,以及一个本地系统依赖包h5sdk
。值得注意的是,本地依赖包的scope
设置为system
,并且通过<systemPath>
指定了本地依赖包的路径。
4. 构建配置
在<build>
标签中,我们定义了项目的插件配置,主要包括以下两部分:
4.1 Maven 编译插件
通过maven-compiler-plugin
插件,我们指定了项目的目标编译版本和源代码版本。
4.2 Maven 组装插件
通过maven-assembly-plugin
插件,我们可以将项目及其依赖打包成一个可执行的Jar包。主要配置项包括:
mainClass
:指定程序入口类。descriptorRef
:配置文件名后缀。finalName
:设置最终生成的文件名。- 自定义描述符:指定自定义的描述符文件
src/main/resources/src.xml
。
三、src.xml 配置详解
在src.xml
文件中,我们定义了组装Jar包的具体配置,如下:
<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd"><!-- 定义组装 ID --><id>jar-with-dependencies</id><!-- 定义组装格式 --><formats><format>jar</format></formats><!-- 是否包含基础目录 --><includeBaseDirectory>false</includeBaseDirectory><!-- 定义依赖集 --><dependencySets><!-- 第一个依赖集 --><dependencySet><!-- 输出目录 --><outputDirectory>/</outputDirectory><!-- 是否使用项目的构件 --><useProjectArtifact>true</useProjectArtifact><!-- 是否解压依赖 --><unpack>true</unpack><!-- 依赖范围 --><scope>runtime</scope></dependencySet><!-- 第二个依赖集 --><dependencySet><!-- 输出目录 --><outputDirectory>/</outputDirectory><!-- 是否使用项目的构件 --><useProjectArtifact>true</useProjectArtifact><!-- 是否解压依赖 --><unpack>true</unpack><!-- 依赖范围 --><scope>system</scope></dependencySet></dependencySets>
</assembly>
组装配置
- 通过
<formats>
标签定义了组装的格式为jar
。 - 通过
<dependencySets>
标签定义了项目的依赖集,并指定了依赖的输出目录、使用项目的构件、解压依赖以及依赖的范围。
四、构建可执行Jar包
在配置完成后,我们可以通过以下命令进行项目的编译和打包:
mvn clean package
执行上述命令后,Maven会根据配置文件进行编译和打包,最终生成一个可执行的Jar包。你可以通过以下命令运行打包后的Jar文件:
java -jar target/demo.jar
五、总结
通过本文的讲解,我们了解了如何使用Maven进行项目的编译和打包,生成一个可执行的Jar包。主要涉及到的配置项包括项目的基本信息、依赖管理、编译插件和组装插件的配置等。希望本文对你在实际项目中使用Maven编译构建Jar包有所帮助。如果你有任何问题或建议,欢迎在评论区留言讨论。
参考链接
- Maven官网
- Hutool
感谢阅读,祝你编程愉快!
🔥🔥🔥道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙
💖The End💖点点关注,收藏不迷路💖 |