Apache Maven Assembly 插件简介

news2024/11/30 10:42:01

Apache Maven Assembly 插件是一个强大的工具,允许您以多种格式(如 ZIP、TAR 和 JAR)创建项目的分发包。

该插件特别适用于将项目与其依赖项、配置文件和其他必要资源一起打包。

通过使用 Maven Assembly 插件,您可以将项目作为一个单独的归档文件分发,从而更方便地共享和部署。

最新版本

Maven Assembly 插件的最新版本为 3.7.1

使用最新版本可以确保访问到最新的特性和改进。

配置 Maven Assembly 插件

要在 Maven 项目中使用 Assembly 插件,您需要在项目的 pom.xml 文件中进行配置。

下面将通过步骤介绍如何设置 Assembly 插件。

步骤 1: 创建 Maven 项目

如果您还没有 Maven 项目,可以使用以下命令创建一个新的 Maven 项目:

mvn archetype:generate -DgroupId=com.example -DartifactId=assembly-plugin-demo -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false

该命令会生成一个简单的 Maven 项目,其目录结构如下:

assembly-plugin-demo
|-- src
|   |-- main
|   |   `-- java
|   |       `-- com
|   |           `-- example
|   |               `-- App.java
|   `-- test
|       `-- java
|           `-- com
|               `-- example
|                   `-- AppTest.java
|-- pom.xml
`-- target
步骤 2: 添加 Maven Assembly 插件配置

进入项目目录并打开 pom.xml 文件,在 <build> 标签内添加 Maven Assembly 插件的配置:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    
    <groupId>com.example</groupId>
    <artifactId>assembly-plugin-demo</artifactId>
    <version>1.0-SNAPSHOT</version>
    
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-assembly-plugin</artifactId>
                <version>3.3.0</version>
                <configuration>
                    <descriptorRefs>
                        <descriptorRef>jar-with-dependencies</descriptorRef>
                    </descriptorRefs>
                    <archive>
                        <manifest>
                            <mainClass>com.example.App</mainClass>
                        </manifest>
                    </archive>
                </configuration>
                <executions>
                    <execution>
                        <id>make-assembly</id>
                        <phase>package</phase>
                        <goals>
                            <goal>single</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>
  • <groupId>: 指定 Maven Assembly 插件的组ID。
  • <artifactId>: 指定 Maven Assembly 插件。
  • <version>: 使用的插件版本。请确保使用最新版本。
  • <descriptorRefs>: 指定要创建的分发包类型。在这个例子中,jar-with-dependencies 用于创建包含所有依赖项的 JAR 文件。
  • <archive>: 配置归档设置,例如 JAR 清单中的主类。
  • <executions>: 定义插件的执行,指定何时创建分发包。在这个例子中,分发包在 package 阶段创建。
步骤 3: 创建主类

打开 src/main/java/com/example/App.java 文件,并更新 App 类以打印 “Hello, World!”:

package com.example;

public class App {
    public static void main(String[] args) {
        System.out.println("Hello, World!");
    }
}
步骤 4: 构建项目

使用以下命令构建项目并创建分发包:

mvn clean package

构建完成后,您会在 target 目录中找到生成的 JAR 文件:

target/
|-- assembly-plugin-demo-1.0-SNAPSHOT.jar
|-- assembly-plugin-demo-1.0-SNAPSHOT-jar-with-dependencies.jar
|-- classes
|-- generated-sources
|-- maven-archiver
|-- maven-status
|-- surefire-reports
|-- test-classes
`-- ...

其中,assembly-plugin-demo-1.0-SNAPSHOT-jar-with-dependencies.jar 文件包含了项目的类和所有依赖项。

步骤 5: 运行打包后的 JAR 文件

使用以下命令运行打包后的 JAR 文件:

java -jar target/assembly-plugin-demo-1.0-SNAPSHOT-jar-with-dependencies.jar

该命令将输出:

Hello, World!

总结

Maven Assembly 插件用于创建项目的分发包。

通过将其集成到 Maven 构建过程中,您可以轻松地将项目及其所有依赖项和其他必要资源打包。

本指南全面介绍了设置和使用 Maven Assembly 插件的方法,并附带一个实际示例帮助您快速上手。

掌握这些知识后,您可以高效地创建和分发 Java 应用程序。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2250378.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

宠物空气净化器推荐2024超详细测评 希喂VS霍尼韦尔谁能胜出

最近有粉丝一直在评论区和后台探讨宠物空气净化器是不是智商税的问题&#xff0c;有人认为宠物空气净化器肯定不是智商税&#xff0c;有些人认为将其购回家就是个没用的东西&#xff0c;还占地方&#xff0c;双方各有自己的观点。 其实宠物空气净化器和普通的空气净化器是有很大…

NeuIPS 2024 | YOCO的高效解码器-解码器架构

该研究提出了一种新的大模型架构&#xff0c;名为YOCO&#xff08;You Only Cache Once&#xff09;&#xff0c;其目的是解决长序列语言模型推理中的内存瓶颈。YOCO通过解码器-解码器结构的创新设计&#xff0c;显著减少推理时的显存占用并提升了长序列的处理效率。 现有大模…

《数据挖掘:概念、模型、方法与算法(第三版)》

嘿&#xff0c;数据挖掘的小伙伴们&#xff01;今天我要给你们介绍一本超级实用的书——《数据挖掘&#xff1a;概念、模型、方法与算法》第三版。这本书是数据挖掘领域的经典之作&#xff0c;由该领域的知名专家编写&#xff0c;系统性地介绍了在高维数据空间中分析和提取大量…

RT-DETR融合Inner-IoU及相关改进思路

RT-DETR使用教程&#xff1a; RT-DETR使用教程 RT-DETR改进汇总贴&#xff1a;RT-DETR更新汇总贴 《Inner-IoU: More Effective Intersection over Union Loss with Auxiliary Bounding Box》 一、 模块介绍 论文链接&#xff1a;https://arxiv.org/abs/2311.02877 代码链接&a…

解决“磁盘已插上,但Windows系统无法识别“问题

电脑上有2块硬盘&#xff0c;一块是500GB的固态硬盘&#xff0c;另一块是1000GB的机械硬盘&#xff0c;按下开机键&#xff0c;发现500G的固态硬盘识别了&#xff0c;但1000GB的机械硬盘却无法识别。后面为了描述方便&#xff0c;将"500GB的固态硬盘"称为X盘&#xf…

[2024年3月10日]第15届蓝桥杯青少组stema选拔赛C++中高级(第二子卷、编程题(2))

方法一&#xff08;string&#xff09;&#xff1a; #include <iostream> #include <string> using namespace std;// 检查是否为回文数 bool isPalindrome(int n) {string str to_string(n);int left 0, right str.size() - 1;while (left < right) {if (s…

智慧防汛平台在城市生命线安全建设中的应用

随着城市化进程的加快&#xff0c;城市基础设施的复杂性和互联性不断增强&#xff0c;城市生命线的安全管理面临前所未有的挑战。智慧防汛平台作为城市生命线安全建设的重要组成部分&#xff0c;通过现代信息技术提升城市防汛应急管理的智能化水平&#xff0c;保障城市安全。 …

【R安装】VSCODE安装及R语言环境配置

目录 VSCODE下载及安装VSCODE上配置R语言环境参考 Visual Studio Code&#xff08;简称“VSCode” &#xff09;是Microsoft在2015年4月30日Build开发者大会上正式宣布一个运行于 Mac OS X、Windows和 Linux 之上的&#xff0c;针对于编写现代Web和云应用的跨平台源代码编辑器&…

Unity3D模型场景等测量长度和角度功能demo开发

最近项目用到多段连续测量物体长度和角度功能&#xff0c;自己研究了下。 1.其中向量角度计算&#xff1a; 需要传入三个坐标来进行计算。三个坐标确定两条向量线段的方向&#xff0c;从而来计算夹角。 public Vector3 SetAngle(Vector3 p1, Vector3 p2,Vector3 p3) { …

02-线性表

目录 2.1线性表基本概念 线性表特点 2.2线性表的顺序表示和实现 Ⅰ.顺序表的初始化 Ⅱ.顺序表的取值 Ⅲ.顺序表的查找 Ⅳ.顺序表的插入 Ⅴ.顺序表的删除 2.3线性表的链式表示和实现 单链表&#xff08;线性链表&#xff09; Ⅰ.单链表的初始化 Ⅱ.单链表的取值 Ⅲ.单链…

云计算基础-期末复习

第一章&#xff1a;云计算概论 一、云计算的定义与特征 1. 定义&#xff1a; 云计算是一种通过网络以按需、可扩展的方式获取计算资源和服务的模式。它将计算资源视为一种公用事业&#xff0c;用户可以根据需求动态获取和释放资源&#xff0c;而无需了解底层基础设施的细节。…

大模型专栏--Spring Ai Alibaba介绍和功能演示

Spring AI Alibaba 介绍和功能演示 背景 Spring AI Alibaba 开源项目基于 Spring AI 构建&#xff0c;是阿里云通义系列模型及服务在 Java AI 应用开发领域的最佳实践&#xff0c;提供高层次的 AI API 抽象与云原生基础设施集成方案&#xff0c;帮助开发者快速构建 AI 应用。…

计算机网络 实验八 应用层相关协议分析

一、实验目的 熟悉CMailServer邮件服务软件和Outlook Express客户端软件的基本配置与使用&#xff1b;分析SMTP及POP3协议报文格式和SMTP及POP3协议的工作过程。 二、实验原理 为了观察到邮件发送的全部过程&#xff0c;需要在本地计算机上配置邮件服务器和客户代理。在这里我…

计算机组成与系统结构复习笔记

1 概念 冯诺伊曼机: ①采用存储程序工作方式: 事先编制好的程序和原始数据送入主存后执行, 取指令 → \to →指令译码并计算下条指令地址 → \to →取操作数并执行 → \to →结果送回主存, 自动逐条执行指令直至程序结束; ②由运算器, 存储器, 控制器, 输入设备, 输出设备 5 部…

CIKM23|基于会话推荐的因果关系引导图学习

论文链接&#xff1a;https://www.researchgate.net/profile/Dianer-Yu/publication/373143453_Causality-guided_Graph_Learning_for_Session-based_Recommendation/links/652b3fe006bdd619c48fdd00/Causality-guided-Graph-Learning-for-Session-based-Recommendation.pdf 这…

Milvus 2.5:全文检索上线,标量过滤提速,易用性再突破!

01. 概览 我们很高兴为大家带来 Milvus 2.5 最新版本的介绍。 在 Milvus 2.5 里&#xff0c;最重要的一个更新是我们带来了“全新”的全文检索能力&#xff0c;之所以说“全新”主要是基于以下两点&#xff1a; 第一&#xff0c;对于全文检索基于的 BM25 算法&#xff0c;我们采…

【机器学习】机器学习的基本分类-监督学习-逻辑回归-Sigmoid 函数

Sigmoid 函数是一种常用的激活函数&#xff0c;尤其在神经网络和逻辑回归中扮演重要角色。它将输入的实数映射到区间 (0, 1)&#xff0c;形状类似于字母 "S"。 1. 定义与公式 Sigmoid 函数的公式为&#xff1a; 特点 输出范围&#xff1a;(0, 1)&#xff0c;适合用…

C++游戏开发入门:如何从零开始实现自己的游戏项目?

成长路上不孤单&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a; 【14后&#x1f60a;///C爱好者&#x1f60a;///持续分享所学&#x1f60a;///如有需要欢迎收藏转发///&#x1f60a;】 今日分享关于C游戏开发的相关内容&#xff01; 关于【…

HTTP(网络)

目录 1.Http的基本代码 1.1 HttpServer.hpp 1.2 简单测试一下 1.3 用telnet测试一下 1.4 用浏览器访问 1.5 返回相应的过程&#xff08;网页版本&#xff09;​编辑 1.5.1 再次用浏览器访问 1.6 返回相应的过程&#xff08;文件版本&#xff09; 1.6.1网页 1.6.2 测试 …

docker服务容器化

docker服务容器化 1 引言2 多个容器间网络联通2.1 单独创建关联2.2 创建时关联 3 服务搭建3.1 镜像清单3.2 容器创建 4 联合实战4.2 flink_sql之kafka到starrocks4.2 flink_sql之mysql到starrocks 5 文献借鉴 1 引言 ​ 利用docker可以很效率地搭建服务&#xff0c;本文在win1…