maven的build节点配置

news2024/12/28 18:19:55

虽然一直在使用maven,但是对于maven的配置还没有深入的了解过。本文以build节点为切入点,主要解释相关maven打包使用到的一些基础配置。

文章目录

  • build节点
  • 常用插件
    • spring-boot-maven-plugin
    • maven-jar-plugin
    • maven-dependency-plugin
  • 注意事项

build节点

一般包含以下几块内容:

  • xxxApplication
  • ,该节点比较重要,支持自定义打包步骤

常用插件

分为两种情况,如果我们的使用了SpringBoot的spring-boot-starter-parent,则可以用以下插件:

spring-boot-maven-plugin

<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
</plugin>

由于使用了spring-boot的插件,天然就支持独立jar包启动,最终打包结果输出一个jar包。

maven-jar-plugin

否则就应该使用maven的默认自带插件进行自定义设置:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
</plugin>

使用该插件则需要配置使得支持独立应用启动,完整的配置文件可以参考以下:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <configuration>
        <archive>
            <manifest>
                <addClasspath>true</addClasspath>
                <!--MANIFEST.MF 中 Class-Path 加入前缀-->
                <classpathPrefix>lib/</classpathPrefix>
                <!--jar包不包含唯一版本标识-->
                <useUniqueVersions>false</useUniqueVersions>
                <!--指定入口类-->
                <mainClass>com.xxx.XxxApplication</mainClass>
            </manifest>
            <manifestEntries>
                <!--MANIFEST.MF 中 Class-Path 加入资源文件目录-->
                <Class-Path>./config/</Class-Path>
            </manifestEntries>
        </archive>
        <outputDirectory>${project.build.directory}</outputDirectory>
    </configuration>
</plugin>

maven-dependency-plugin

处理与依赖相关的插件,将打包结果所依赖的文件均进行统一管理。一般与maven-jar-plugin插件搭配使用,使用示例如下:

<!--拷贝依赖 copy-dependencies-->
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-dependency-plugin</artifactId>
    <executions>
        <execution>
            <id>copy-dependencies</id>
            <phase>package</phase>
            <goals>
                <goal>copy-dependencies</goal>
            </goals>
            <configuration>
                <outputDirectory>
                    ${project.build.directory}/lib/
                </outputDirectory>
            </configuration>
        </execution>
    </executions>
</plugin>

注意事项

  1. 如果我们的项目是一个聚合工程包含了多个模块,那么需要注意父pom不需要节点

  2. 需要区分项目的插件使用,例如我们使用了spring-boot-maven-plugin就必须要保证项目的父依赖使用了spring-boot-starter-parent,否则将会导致打包失败

  3. 在SpringCloud项目中,如果使用了properties指定了springboot.version,则parent中的spring-boot-starter-parent也要保持一致的版本号
    请添加图片描述

  4. 在聚合工程中,只有在需要独立运行的模块中才需要加上节点,如果只是被依赖方则不需要加上节点

参考资料:

  • Maven之POM文件build标签详解
  • Maven命令打包springboot项目运行提示jar中没有主清单属性
  • spring-boot-maven-plugin多模块install问题
  • classNotFoundException:org.springframework.core.metrics.ApplicationStartup

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

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

相关文章

基于javaweb的会议管理系统源码+数据库,javaEE会议管理系统源码

guihaiyidao_git 介绍 javaEE工程 普通的javaEE工程&#xff0c;用idea打开工程即可运行 服务器用的是Tomcat 8.5.722 数据库用的Oracle xe版 数据库可视化工具使用的是PLSQL 相关软件 需要可从百度网盘中获取 链接&#xff1a;https://pan.baidu.com/s/1ZrmfsvQEA4dIP0GF_p…

CSS 布局 - 水平 垂直对齐

CSS 布局 - 水平 & 垂直对齐 那么怎样设置居中对齐呢? 我们可以用margin: auto来设置水平居中对其元素。auto可以防止 元素的宽高溢出&#xff0c;而且也可以平均分配两边的空白。 举例说明: .center {padding: 23px;border: 5px solid red;width: 41%;margin: auto; }那…

【数据结构】单向链表的原理及实现

1.什么是单链表 链表里的数据是以节点的方式表示的&#xff0c;每一个结点的组成是由&#xff1a;元素指针来组成的&#xff0c;元素就是存储数据里的存储单元&#xff0c;指针就是用来连接每一个结点的地址数据。这个以结点的序列来表示线性表被称作为单链表。 单链表是一种…

牛客寒假算法集训营1 补题

标题迷惑大赏 A、World Final? World Cup! 题目描述 众所周知&#xff0c;2022年是四年一度的世界杯年&#xff0c;那么当然要整点足球题。本题需要你模拟一次点球大战。 假设对战双方为A和B&#xff0c;则点球大战中双方会按照ABABABABAB方式来罚点球&#xff0c;即两队交…

【闪电侠学netty】第7章 数据载体ByteBuf的介绍

1. 内容概要 1.1 总结 1.1.1 内存管理 Netty 使用的是堆外内存&#xff0c;需要手动释放&#xff0c;使用引用计数的方式管理内存&#xff0c;当引用计数 0&#xff0c;回收ByteBuf 底层内存 原则&#xff1a;谁使用retain() , 谁释放release() 1.1.2 创建ByteBuf的方式 B…

ASCII码,字符,字符串三者之间的关系

程序调试中遇到问题&#xff1a;在使用sprintf 函数&#xff0c;在转换字符串时&#xff0c;如果遇到0时&#xff0c;会自动认为是结束标志&#xff0c;0以后的内容不会被添加进来。复习一下字符串&#xff1a;一. ASCII码是什么&#xff1f;ASCII 全称为 ( American Standard …

【2023更新】通过硬件触发信号实现OAK多相机之间的同步拍摄

编辑&#xff1a;OAK中国 首发&#xff1a;oakchina.cn 喜欢的话&#xff0c;请多多&#x1f44d;⭐️✍ 内容可能会不定期更新&#xff0c;官网内容都是最新的&#xff0c;请查看首发地址链接。 ▌前言 Hello&#xff0c;大家好&#xff0c;这里是OAK中国&#xff0c;我是助手…

经典文献阅读之--NeRF-SLAM(单目稠密重建)

0. 简介 最近几年随着深度学习的发展&#xff0c;现在通过深度学习去预估出景深的做法已经日渐成熟&#xff0c;所以随之而来的是本文的出现《Real-Time Dense Monocular SLAM with Neural Radiance Fields》。这篇文章是一个结合单目稠密SLAM和层次化体素神经辐射场的3D场景重…

【自学Docker 】Docker管理命令大全(下)

文章目录Docker kill命令Docker kill命令概述Docker kill命令语法Docker kill命令参数案例使用容器 ID 杀掉容器使用容器名杀掉容器Docker kill命令总结Docker rm命令Docker rm命令概述Docker rm命令语法Docker rm命令参数案例删除已停止的容器删除正在运行的容器Docker rm命令…

13.拷贝控制

文章目录拷贝控制13.1拷贝、赋值与销毁13.1.1拷贝构造函数合成拷贝构造函数拷贝初始化参数和返回值编译器可以绕过拷贝构造函数13.1.2拷贝赋值运算符重载赋值运算符合成拷贝赋值运算符13.1.3析构函数析构函数完成什么工作什么时候会调用析构函数合成析构函数13.1.4三/五法则需要…

寒假题练——day(4)

题目 1 一个数组中只有两个数字是出现一次&#xff0c;其他所有数字都出现了两次。 编写一个函数找出这两个只出现一次的数字。 #include<stdio.h> int main() {int arr[] { 1, 3, 8, 1, 3, 8, 4, 6 };int num 0;int sz sizeof(arr) / sizeof(arr[0]);int i 0;int…

【Linux】六、Linux 基础IO(二)|重定向|如何理解 Linux一切皆文件|缓冲区

目录 五、重定向 5.1 什么是重定向 5.2 系统调用 dup2 5.3 三种重定向测试 5.3.1 输出重定向(>) 5.3.2 追加重定向(>>) 5.3.3 输入重定向(<) 5.4 父子进程拷贝问题 六、如何理解 Linux一切皆文件 七、缓冲区 7.1 认识缓冲区 7.2 缓冲区的刷新策略 …

连续系统PID的Simulink仿真-2

仍以二阶线性传递函数为被控对象&#xff0c;进行模拟PID 控制。被控对象形式为,其中b为在[103,163]范围内随机变化&#xff0c;a为在[15,35]范围内随机变化&#xff0c;则被控对象的描述方式可转换为&#xff1a;S函数是Simulink一项重要的功能&#xff0c;采用S函数可实现在S…

Pandas 数据清洗

Pandas 数据清洗数据清洗是对一些没有用的数据进行处理的过程。很多数据集存在数据缺失、数据格式错误、错误数据或重复数据的情况&#xff0c;如果要对使数据分析更加准确&#xff0c;就需要对这些没有用的数据进行处理。在这个教程中&#xff0c;我们将利用 Pandas包来进行数…

微软ATP带你看| 爆火的ChatGPT是什么?

&#xff08;本文阅读时间&#xff1a;7分钟&#xff09;OpenAI最新聊天机器人ChatGPT火爆全网&#xff01;能写代码、编剧本&#xff0c;马斯克都盛赞它“好得吓人”&#xff01;ChatGPT是什么GPT(Generative Pre-trained Transformer)系列是由OpenAI提出的非常强大的预训练语…

MaxCompute SQL示例解析

MaxCompute SQL示例解析 介绍MaxCompute SQL常见使用场景&#xff0c;掌握SQL的写法。 准备数据集 本文以emp表和dept表为示例数据集。您可以自行在MaxCompute项目上创建表并上传数据。 emp.csv中数据如下 7369,SMITH,CLERK,7902,1980-12-17 00:00:00,800,20 7499,ALLEN,SALES…

aws codebuild 使用和配置codebuild测试报告

参考资料 使用 Amazon CodeBuild 中的测试报告在 CodeBuild 使用AWS CLI样本中创建测试报告aws-codebuild-samples 在codebuild构建过程中获取有关在构建期间运行的测试的详细信息。 codebuild测试报告 通过在buildspec.yaml中配置报告组&#xff0c;运行构建项目时系统将运…

【代码随想录】96.不同的二叉搜索树

96.不同的二叉搜索树 思路 n为1的时候有一棵树&#xff0c;n为2有两棵树&#xff0c;这个是很直观的。 n为3的时候&#xff0c;有哪几种情况。 当1为头结点的时候&#xff0c;其右子树有两个节点&#xff0c;看这两个节点的布局&#xff0c;是不是和 n 为2的时候两棵树的布…

控价公司可以帮我们做什么?什么时候需要找第三方控价公司?

如果&#xff0c;我们品牌的销售渠道遭遇了低价乱价、窜货、侵权、假冒等问题&#xff0c;扰乱了我们品牌的渠道秩序&#xff0c;或者是我们在品牌发展的过程中&#xff0c;想通过对行业和竞品的了解来明确发展方向和策略&#xff0c;而自己又分身乏术或无从下手&#xff0c;这…

车辆信息查询

要想查一辆汽车的信息&#xff0c;除了去各个汽车平台上查询&#xff0c;比如汽车之家、易车网、懂车帝等&#xff0c;还可以使用“汽车公告查询”。 通过常规网页百度搜索引擎&#xff0c;输入关键字“汽车公告查询”&#xff0c;就会获取到相关搜索结果&#xff0c;汽车公告查…