当前位置: 首页 > news >正文

flatten-maven-plugin使用

这篇文章主要介绍了flatten-maven-plugin使用,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

目录
  • 一、简介
    • 1.1 作用
    • 1.2 goal介绍
  • 二、使用总结

一、简介

1.1 作用

将pom工程父子pom的版本,提出作为变量定义在properties。

这样仅修改变量的值(如在运行mvn命令时指定) 即可实现版本整体切换。

1.2 goal介绍

  • flatten:clean

删除flatten插件生成的 .flattened-pom.xml

配置参数有:

flattenedPomFilename: 插件生成的pom的名字,默认为 .flattened-pom.xml

outputDirectory:插件生成pom的目录,默认为 ${project.basedir}

  • flatten:flatten

resources-process生成 .flattened-pom.xml,并在install/deploy时替换原始pom.xml

主要配置参数有:

flattenedPomFilename: 插件生成的pom的名字,默认为 .flattened-pom.xml

outputDirectory:插件生成pom的目录,默认为 ${project.basedir}

updatePomFile: packing=pom的module也进行reversion变量替换,默认为false

flattenMode:用来定义生成 .flattened-pom.xml所包含的元素,常用值有:

oss:开源软件常用,除了repositories/pluginRepositories外其他所有FlattenDescriptor定义的元素都生成

ossrh:所有FlattenDescriptor定义的元素都生成

bom:在ossrh基础上增加dependencyManagement和properties

defaults:除了repositories其他所有FlattenDescriptor定义的元素都不生成

clean:所有FlattenDescriptor定义的元素都不生成

fatjar:所有FlattenDescriptor定义的元素和dependencies都不生成

resolveCiFriendliesOnly:只替换原始pom中的revision, sha1 and changelist,其他否保持原样

常用oss/ossrh/resolveCiFriendliesOnly

  • FlattenDescriptor定义的pom.xml元素有:

modelVersion
groupId
artifactId
version
packaging
licenses
dependencies
profiles
name
description
url
inceptionYear
organization
scm
developers
contributors
mailingLists
pluginRepositories
issueManagement
ciManagement
distributionManagement
prerequisites
repositories
parent
build
dependencyManagement
properties
modules
reporting

二、使用总结

  • 不用flatten-maven-plugin

1.父pom定义版本为变量reversion并作为version,子pom复引用变量reversion作为version

2.结果能正常运行compile/test, 但install或deploy时父子pom中的version还是reversion变量未被替换

3.没有version别人无法引用你的包

父pom.xml

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

<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>

    <packaging>pom</packaging>

    <version>${reversion1}</version>

    <modules>

        <module>no-flatten-child</module>

    </modules>

    <groupId>com.wsl.my.maven</groupId>

    <artifactId>no-flatten-plugin</artifactId>

    <properties>

        <maven.compiler.source>8</maven.compiler.source>

        <maven.compiler.target>8</maven.compiler.target>

        <reversion1>1.1.0-SNAPSHOT</reversion1>

    </properties>

</project>

子pom.xml

1

2

3

4

5

6

7

8

9

10

11

12

13

<?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://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

    <parent>

        <artifactId>no-flatten-plugin</artifactId>

        <groupId>com.wsl.my.maven</groupId>

        <version>${reversion1}</version>

        <relativePath>../pom.xml</relativePath>

    </parent>

    <modelVersion>4.0.0</modelVersion>

    <artifactId>no-flatten-child</artifactId>

</project>

install/deploy后父子pom.xml中的${reversion1}没有被替换

  • 使用了flatten-maven-plugin

1.父pom定义版本为变量reversion并作为version,子pom复引用变量reversion作为version

2.使用flatten-maven-plugin并设置updatePomFile=true,并绑定goal到maven周期

3.在process-resources阶段时会在父子project目录下生成.flattened-pom.xml(version已替换为具体值)

4.运行install或deploy时会将.flattened-pom.xml替换原来的pom.xml

原始父pom

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

<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>

    <version>${reversion2}</version>

    <packaging>pom</packaging>

    <artifactId>use-flatten-parent</artifactId>

        <groupId>com.wsl.my.maven</groupId>

    <modules>

        <module>use-flatten-child</module>

    </modules>

    <properties>

        <maven.compiler.source>8</maven.compiler.source>

        <maven.compiler.target>8</maven.compiler.target>

        <reversion2>1.2.0-SNAPSHOT</reversion2>

    </properties>

    <build>

        <plugins>

            <plugin>

                <groupId>org.codehaus.mojo</groupId>

                <artifactId>flatten-maven-plugin</artifactId>

                <version>1.2.7</version>

                <configuration>

                    <updatePomFile>true</updatePomFile>

                    <flattenMode>resolveCiFriendliesOnly</flattenMode>

                </configuration>

                <executions>

                    <execution>

                        <id>flatten</id>

                        <phase>process-resources</phase>

                        <goals>

                            <goal>flatten</goal>

                        </goals>

                    </execution>

                    <execution>

                        <id>flatten-clean</id>

                        <phase>clean</phase>

                        <goals>

                            <goal>clean</goal>

                        </goals>

                    </execution>

                </executions>

            </plugin>

        </plugins>

    </build>

</project>

相关文章:

flatten-maven-plugin使用

这篇文章主要介绍了flatten-maven-plugin使用&#xff0c;本文通过示例代码给大家介绍的非常详细&#xff0c;对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下 − 目录 一、简介 1.1 作用1.2 goal介绍二、使用总结 一、简介 1.1 作用 将pom工程父子pom的版…...

Vue3中快速简单使用CKEditor 5富文本编辑器

Vue3简单使用CKEditor 5 前言准备定制基础配置富文本配置目录当前文章demo目录结构 快速使用demo 前言 CKEditor 5就是内嵌在网页中的一个富文本编辑器工具 CKEditor 5开发文档&#xff08;英文&#xff09;&#xff1a;https://ckeditor.com/docs/ckeditor5/latest/index.htm…...

qt简易网络聊天室 数据库的练习

qt网络聊天室 服务器&#xff1a; 配置文件.pro QT core gui networkgreaterThan(QT_MAJOR_VERSION, 4): QT widgetsCONFIG c11# The following define makes your compiler emit warnings if you use # any Qt feature that has been marked deprecated (the exac…...

Navicat连接mysql8.0:提示无法加载身份验证插件“caching_sha2_password”

Navicat连接mysql时&#xff0c;提示&#xff1a;Unable to load authentication plugin ‘caching_sha2_password‘. 原因&#xff1a;mysql 8.0 默认使用 caching_sha2_password 身份验证机制。 D:\MySQL8.0\install\bin>mysql -uroot -p123456789 #登录 mysql: [War…...

手写签名到背景上合为1张图

手写签名到背景上合为1张图 package.json中 "signature_pad": "3.0.0-beta.3"<template><div class"home"><canvas id"canvas" width"500" height"300"></canvas><button click"…...

华为认证系统学习大纲及课程

前言 任何学习过程都需要一个科学合理的学习路线&#xff0c;才能够有条不紊的完成我们的学习目标。华为认证网络工程师所需学习的内容纷繁复杂&#xff0c;难度较大&#xff0c;所以今天特别为大家整理了一个全面的华为认证网络工程师学习大纲及课程&#xff0c;帮大家理清思…...

某米ax3000路由器组网解析

我们使用某米k60手机与某米ax3000 wifi6路由器组网&#xff0c;来分析和学习网络速率与瓶颈限制。 某米 AX3000 路由器简介 某米 AX3000 路由器是一款支持 WiFi 6 的双频路由器&#xff0c;它的 MIMO 是 22&#xff0c;也就是两根天线。MIMO 是 Multiple Input Multiple Outpu…...

【leetcode 力扣刷题】数学题之除法:哈希表解决商的循环节➕快速乘求解商

两道和除法相关的力扣题目 166. 分数到小数29. 两数相除快速乘解法一&#xff1a;快速乘变种解法二&#xff1a; 二分查找 快速乘 166. 分数到小数 题目链接&#xff1a;166. 分数到小数 题目内容&#xff1a; 题目是要我们把一个分数变成一个小数&#xff0c;并以字符串的形…...

Union类型和集合的union()方法-set.union()

Union类型和集合的Union 方法 一、Union类型1.Union类型由来2.Union类型的语法3.Union类型的使用4.一些等价写法 二、Set.union()union() 语法示例代码 一、Union类型 1.Union类型由来 Python中的Union类型是 3.10版本引入的新功能之一。它是一种特殊的类型注释&#xff0c;用…...

简明SQL别名指南:掌握AS实现列名更名

在 SQL 查询中&#xff0c;使用 {原始字段名} as {别名} 的语法来为查询结果的列赋予更直观的名称&#xff0c;以提高查询结果的可读性和可理解性。 以下是用到的表。 用AS更名 例如&#xff0c;查询表1的name字段&#xff0c;并将其更名为"名字"&#xff0c;同时查…...

基于量子密钥分发和区块链技术的新一代加密通信系统

量子通信与区块链构建下一代加密通信基础设施 量子技术和区块链技术是国家信息安全和国家数字化转型的重要组成部分&#xff0c;在国家战略中具有重要地位。“十四五”规划纲要将“加快数字发展建设数字中国”作为独立篇章&#xff0c;指出要进一步明确发展云计算、大数据、物联…...

网络安全-子域名收集

本文为作者学习文章&#xff0c;按作者习惯写成&#xff0c;如有错误或需要追加内容请留言&#xff08;不喜勿喷&#xff09; 本文为追加文章&#xff0c;后期慢慢追加 子域名 子域名指二级域名,二级域名是顶级域名(一级域名)的下一级比如mail.heetian.com和bbs.heetian.com…...

go-zero jwt 鉴权快速实战

前面我们分享了 go-zero 的快速实战以及日志组件的剖析&#xff0c;本次我们来实战使用 go-zero jwt 鉴权 本次文章主要是分享关于 go-zero 中 jwt 的使用方式&#xff0c;会以一个 demo 的方式来进行实战&#xff0c;对于使用 goctl 工具以及安装细节就不在赘述&#xff0c;有…...

9.8day58 单调栈

739. 每日温度 - 力扣&#xff08;LeetCode&#xff09; 知识点&#xff1a;1.建栈 2.如果后面要加入的数小于栈顶元素就把数组的下标压进栈里 3.反之 就让该数于栈顶元素进行比较 如果该数大于栈顶元素&#xff08;while&#xff09; 就把栈顶元素下表对应的arr数组的值进行…...

快速完成工信部APP备案流程_以阿里云APP备案为例

阿里云APP备案流程分为6步&#xff0c;APP备案成功后应用可以上架&#xff0c;登录阿里云账号填写APP信息&#xff0c;等待阿里云初审&#xff0c;初审通过后进行工信部短信核验&#xff0c;管局审核通过后APP即可备案成功&#xff0c;最后移动APP应用可以分发平台上架&#xf…...

uniapp中UView中 u-form表单在v-for循环下如何进行表单校验

1、数据data格式 注&#xff1a;rule绑定的tableFromRule中要和表单tableFrom下面放置一个同名数组&#xff0c;确保u-form能找到 tableFrom: {tableData: [//数据详情列表]},tableFromRule: {//校验tableData: [//数据详情列表]},formRules:{localation:[{required: true,mes…...

工作新时代,腾讯轻联塑造高效办公未来

腾讯轻联&#xff1a;开启便捷、高效的集成新纪元 ⭐ 写在前面⭐ 使用模板快速起步⭐ 自定义流程初体验⭐ 无与伦比的集成强者⭐ 写在最后 ⭐ 写在前面 在当今竞争激烈的商业环境中&#xff0c;提高企业的办公效率和工作流程自动化变得至关重要。腾讯轻联&#xff0c;作为新一…...

JavaScript实现广告倒计时和跳过广告

倒计时和跳过广告 最近打开手机上的app&#xff0c;映入眼帘的都是一个几秒的广告&#xff0c;带有倒计时&#xff0c;当然如果不喜欢的话可以点击跳过&#xff0c;跳过广告其实质应该就是关闭广告。以前用JavaScript做过一个定时关闭的广告&#xff0c;于是把代码完善了一下&…...

蚂蚁发布金融大模型:两大应用产品支小宝2.0、支小助将在完成备案后

9月8日&#xff0c;在上海举办的外滩大会上&#xff0c;蚂蚁集团正式发布金融大模型。据了解&#xff0c;蚂蚁金融大 模型基于蚂蚁自研基础大模型&#xff0c;针对金融产业深度定制&#xff0c;底层算力集群达到万卡规模。该大 模型聚焦真实的金融场景需求&#xff0c;在“认知…...

Jenkins 持续集成:Linux 系统 两台机器互相免密登录

背景知识 我们把public key放在远程系统合适的位置&#xff0c;然后从本地开始进行ssh连接。 此时&#xff0c;远程的sshd会产生一个随机数并用我们产生的public key进行加密后发给本地&#xff0c;本地会用private key进行解密并把这个随机数发回给远程系统。 最后&#xf…...

毕业设计实战:基于SSM的学生宿舍设备报修管理系统设计与实现全攻略

毕业设计实战&#xff1a;基于SSM的学生宿舍设备报修管理系统设计与实现全攻略 在开发“学生宿舍设备报修管理系统”这套毕设时&#xff0c;我曾因“故障上报与维修派单流程脱节”踩过一个关键坑。初期设计时&#xff0c;我将“学生报修”和“维修人员接单”视为两个独立的模块…...

Zemax优化别再乱点‘锤子’了!一个光学新手的真实踩坑与避坑指南

Zemax优化实战&#xff1a;从新手误区到高效操作的进阶指南 刚接触Zemax的光学设计师们&#xff0c;往往会被软件中那个神秘的"锤形优化"按钮所吸引——看似简单的点击就能自动改善设计&#xff0c;这种诱惑难以抗拒。但很快就会发现&#xff0c;盲目依赖这个功能可能…...

FPGA实战:单总线协议解析与DHT11温湿度数据采集

1. 从零认识DHT11温湿度传感器 第一次拿到DHT11这个白色小方块时&#xff0c;我完全没想到这么便宜的传感器能有如此实用的功能。作为一款经典的数字温湿度复合传感器&#xff0c;DHT11通过单总线协议输出校准后的数字信号&#xff0c;省去了传统模拟传感器需要的ADC转换环节。…...

解决Windows远程桌面连接Ubuntu时xrdp闪退的配置技巧

1. 问题现象与排查思路 最近在帮同事配置Windows远程连接Ubuntu时遇到了一个典型问题&#xff1a;用Windows自带的远程桌面连接工具输入账号密码后&#xff0c;界面闪退无法进入桌面。这种情况在Ubuntu 18.04/20.04/22.04各版本中都可能出现&#xff0c;特别是使用GNOME桌面环…...

RuoYi-Cloud微服务架构下PostgreSQL数据库迁移实战指南

1. 迁移前的准备工作 在开始将RuoYi-Cloud从MySQL迁移到PostgreSQL之前&#xff0c;我们需要做好充分的准备工作。这就像搬家前要打包物品一样&#xff0c;准备工作做得好&#xff0c;后续的迁移过程就会顺利很多。 首先&#xff0c;我们需要了解PostgreSQL和MySQL之间的主要差…...

Z-Image-Turbo_Sugar脸部Lora效果增强:ControlNet+Lora联合调控Sugar脸部结构

Z-Image-Turbo_Sugar脸部Lora效果增强&#xff1a;ControlNetLora联合调控Sugar脸部结构 想生成那种又纯又欲、甜度爆表的Sugar风格脸部图片吗&#xff1f;是不是经常遇到模型生成的脸型不够精致、五官比例失调&#xff0c;或者风格不够统一的问题&#xff1f;今天&#xff0c…...

RCE漏洞小结

RCE漏洞简介 所谓RCE漏洞&#xff0c;即Remote Code/Command Execution&#xff0c;远程代码执行和远程命令执行漏洞。在很多Web应⽤中&#xff0c;开发⼈员会使⽤⼀些函数&#xff0c;这些函数以⼀些字符串作为输⼊&#xff0c;功能是将输⼊的字符串当作代码或者命令来进⾏执…...

OpenClaw多模型切换:百川2-13B与Qwen在任务链中的混合调用策略

OpenClaw多模型切换&#xff1a;百川2-13B与Qwen在任务链中的混合调用策略 1. 为什么需要多模型混合调用&#xff1f; 去年冬天&#xff0c;当我第一次尝试用OpenClaw自动化处理周报时&#xff0c;发现一个有趣的现象&#xff1a;同一个模型在写作创意部分和代码生成环节的表…...

OpenClaw儿童模式:基于百川2-13B打造家长控制的作业辅导助手

OpenClaw儿童模式&#xff1a;基于百川2-13B打造家长控制的作业辅导助手 1. 为什么需要AI作业辅导助手&#xff1f; 作为两个小学生的家长&#xff0c;我深刻体会到辅导作业的"痛"。每天晚上检查数学题、批改作文、讲解错题的过程&#xff0c;常常让亲子关系变得紧…...

百度网盘直链解析技术全解析:从原理到实践的开源解决方案

百度网盘直链解析技术全解析&#xff1a;从原理到实践的开源解决方案 【免费下载链接】baidu-wangpan-parse 获取百度网盘分享文件的下载地址 项目地址: https://gitcode.com/gh_mirrors/ba/baidu-wangpan-parse 1. 问题本质&#xff1a;云存储限速的技术困局 1.1 限速…...