💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。
-
推荐:「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💖点点关注,收藏不迷路💖
|