maven 编译构建可以执行的jar包

2024-09-09 08:12
文章标签 maven 编译 构建 执行 jar

本文主要是介绍maven 编译构建可以执行的jar包,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!


在这里插入图片描述
💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。
在这里插入图片描述

  • 推荐:「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文件开头,我们定义了项目的基本信息,这些信息包括groupIdartifactIdversion。这些信息用于唯一标识项目。

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💖点点关注,收藏不迷路💖

这篇关于maven 编译构建可以执行的jar包的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1150624

相关文章

Java使用jar命令配置服务器端口的完整指南

《Java使用jar命令配置服务器端口的完整指南》本文将详细介绍如何使用java-jar命令启动应用,并重点讲解如何配置服务器端口,同时提供一个实用的Web工具来简化这一过程,希望对大家有所帮助... 目录1. Java Jar文件简介1.1 什么是Jar文件1.2 创建可执行Jar文件2. 使用java

C++统计函数执行时间的最佳实践

《C++统计函数执行时间的最佳实践》在软件开发过程中,性能分析是优化程序的重要环节,了解函数的执行时间分布对于识别性能瓶颈至关重要,本文将分享一个C++函数执行时间统计工具,希望对大家有所帮助... 目录前言工具特性核心设计1. 数据结构设计2. 单例模式管理器3. RAII自动计时使用方法基本用法高级用法

Java实现远程执行Shell指令

《Java实现远程执行Shell指令》文章介绍使用JSch在SpringBoot项目中实现远程Shell操作,涵盖环境配置、依赖引入及工具类编写,详解分号和双与号执行多指令的区别... 目录软硬件环境说明编写执行Shell指令的工具类总结jsch(Java Secure Channel)是SSH2的一个纯J

Three.js构建一个 3D 商品展示空间完整实战项目

《Three.js构建一个3D商品展示空间完整实战项目》Three.js是一个强大的JavaScript库,专用于在Web浏览器中创建3D图形,:本文主要介绍Three.js构建一个3D商品展... 目录引言项目核心技术1. 项目架构与资源组织2. 多模型切换、交互热点绑定3. 移动端适配与帧率优化4. 可

Maven中生命周期深度解析与实战指南

《Maven中生命周期深度解析与实战指南》这篇文章主要为大家详细介绍了Maven生命周期实战指南,包含核心概念、阶段详解、SpringBoot特化场景及企业级实践建议,希望对大家有一定的帮助... 目录一、Maven 生命周期哲学二、default生命周期核心阶段详解(高频使用)三、clean生命周期核心阶

python 线程池顺序执行的方法实现

《python线程池顺序执行的方法实现》在Python中,线程池默认是并发执行任务的,但若需要实现任务的顺序执行,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋... 目录方案一:强制单线程(伪顺序执行)方案二:按提交顺序获取结果方案三:任务间依赖控制方案四:队列顺序消

Python利用PySpark和Kafka实现流处理引擎构建指南

《Python利用PySpark和Kafka实现流处理引擎构建指南》本文将深入解剖基于Python的实时处理黄金组合:Kafka(分布式消息队列)与PySpark(分布式计算引擎)的化学反应,并构建一... 目录引言:数据洪流时代的生存法则第一章 Kafka:数据世界的中央神经系统消息引擎核心设计哲学高吞吐

Go语言连接MySQL数据库执行基本的增删改查

《Go语言连接MySQL数据库执行基本的增删改查》在后端开发中,MySQL是最常用的关系型数据库之一,本文主要为大家详细介绍了如何使用Go连接MySQL数据库并执行基本的增删改查吧... 目录Go语言连接mysql数据库准备工作安装 MySQL 驱动代码实现运行结果注意事项Go语言执行基本的增删改查准备工作

Springboot项目构建时各种依赖详细介绍与依赖关系说明详解

《Springboot项目构建时各种依赖详细介绍与依赖关系说明详解》SpringBoot通过spring-boot-dependencies统一依赖版本管理,spring-boot-starter-w... 目录一、spring-boot-dependencies1.简介2. 内容概览3.核心内容结构4.

java -jar example.jar 产生的日志输出到指定文件的方法

《java-jarexample.jar产生的日志输出到指定文件的方法》这篇文章给大家介绍java-jarexample.jar产生的日志输出到指定文件的方法,本文给大家介绍的非常详细,对大家的... 目录怎么让 Java -jar example.jar 产生的日志输出到指定文件一、方法1:使用重定向1、