首页 > 其他分享 >Maven小知识:1.packagingpompackaging是什么意思?2.propertiesproperties标签作用?3.dependencyManagement标签作用?

Maven小知识:1.packagingpompackaging是什么意思?2.propertiesproperties标签作用?3.dependencyManagement标签作用?

时间:2023-06-22 22:36:38浏览次数:41  
标签:propertiesproperties dependencyManagement 子项目 项目 标签 jar pom 模块

Maven小知识:

(1) <packaging>pom</packaging>是什么意思?

1、配置<packaging>pom</packaging>的意思是使用maven分模块管理,都会有一个父级项目,pom文件一个重要的属性就是packaging(打包类型),一般来说所有的父级项目的packaging都为pom,packaging默认类型jar类型,如果不做配置,maven会将该项目打成jar包。

2、项目的打包类型:pom、jar、war

  packing默认是jar类型,

  pom ---------> 父类型都为pom类型

  jar ---------> 内部调用或者是作服务使用

  war ---------> 需要部署的项目

3、

POM是最简单的打包类型。不像一个JAR,SAR,或者EAR,它生成的构件只是它本身。

没有代码需要测试或者编译,也没有资源需要处理。打包类型为POM的项目的默认目标

生命周期阶段 目标

package site:attach-descriptor

install install:install

deploy deploy:deploy

4、pom 项目里没有java代码,也不执行任何代码,只是为了聚合工程或传递依赖用的。

5、可以理解成是将多个model合并

————————————————————————————————————————————————————————————

(2) <properties></properties>标签作用?

eg:

<properties>

  <mybatis-plus.version>3.0.5</mybatis-plus.version>
  <velocity.version>2.0</velocity.version>
  <swagger.version>2.7.0</swagger.version>

  ....

</properties>

用法

<!-- 配置<dependencyManagement>锁定依赖的版本 -->
<dependencyManagement>
<!--mybatis-plus 持久层-->
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>${mybatis-plus.version}</version>
</dependency>

<!-- velocity 模板引擎, Mybatis Plus 代码生成器需要 -->
<dependency>
    <groupId>org.apache.velocity</groupId>
    <artifactId>velocity-engine-core</artifactId>
    <version>${velocity.version}</version>
</dependency>

<!--swagger-->
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger2</artifactId>
    <version>${swagger.version}</version>
</dependency>
....
</dependencyManagement>
 

通过<properties>元素用户可以自定义一个或多个Maven属性,然后在POM的其他地方使用${属性名}的方式引用该属性,这种做法的最大意义在于消除重复和统一管理。

(3)<dependencyManagement>标签作用?、

dependencyManagement的使用场景:           随着微服务的火爆,导致了我们现在的项目由多个微服务模块组成,列如一个电商的项目会被分割成诸如:订单微服务,库存微服务,商品微服务等模块,为了保证项目中的各个模块所使用的包保持一致性,我们需要在最顶层(父项目)中进行版本号的锁定。假如我们使用的springboot的版本为2.X,那么我们我们的springcloud版本也就随之确定为Finchley版本。换言之,我们所有的子微服务必须使用相同的springcloud版本,这个时候dependencyManagement的作用就体现出了,只需要在顶层项目中加入

 <dependencyManagement>
        <dependencies>
        <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring‐cloud‐dependencies</artifactId>
        <version>Finchley.M9</version>
        <type>pom</type>
        <scope>import</scope>
        </dependency>
        </dependencies>
 </dependencyManagement>

这段代码后,假如订单模块使用springcloud时,只需要引入如下代码,无须再引用版本号等信息,因为springcloud版本号已被锁定

<dependencies>
        <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring‐cloud‐starter‐netflix‐eurekaserver</
        artifactId>
        </dependency>
        </dependencies>

dependencies的使用场景     如果顶层模块引入到一个jar,那么所有他的子模块都会继承这个jar包。    dependencies和dependencyManagement的区别    dependencyManagement里只是声明依赖,并不实现引入,因此子项目需要显式的声明需要用的依赖。如果不在子项目中声明依赖,是不会从父项目中继承下来的;只有在子项目中写了该依赖项,并且没有指定具体版本,才会从父项目中继承该项,并且version和scope都读取自父pom;另外如果子项目中指定了版本号,那么会使用子项目中指定的jar版本。      dependencies即使在子模块中不写该依赖项,那么子模块仍然会从父项目中继承该依赖项(全部继承)

标签:propertiesproperties,dependencyManagement,子项目,项目,标签,jar,pom,模块
From: https://www.cnblogs.com/javaxubo/p/17498473.html

相关文章

  • 记录--新的HTML标签 :<search>
    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助本文介绍了一种新的HTML元素搜索方法,并提供了一个实用的工具来帮助开发者快速找到所需的元素。这对于那些需要处理大量HTML元素的开发者来说是非常有用的。文章还通过提供一些常见元素的用法示例,帮助开发者更好地......
  • js如何操作video标签
    一.简介在做webui自动化时,遇到操作视频的时候有时比较让人头疼,定位时会发现只有一个<video>标签,用selenium来实现的话比较麻烦,使用js后我们只需定位到video标签,然后通过js中处理video的相关属性和方法就可实现,我们继续往下看。二.实例用法1.获取视频的总时长(duration)#doc......
  • 单标签下的日间/黑夜模式切换按钮效果
    前不久,在网上看到这么一张非常有趣的图:想必很多同学都看到这张图,是一个开发小哥被一个日间/黑夜模式切换按钮效果逼疯的视频。其最终效果大致如下:原完整代码在这里:Night&&DayToggle☀️/......
  • 删除标签
    publicfinalvoiddeleteBookmark(Cursorcur,intpos){//fetchinginfo((Cursor)cur).moveToPosition(pos);finalStringbookmark_id=((Cursor)cur).getString(((Cursor)cur).getColumnIndex(Browser.BookmarkColumns._ID));finalStringboo......
  • js如何操作video标签
    一.简介在做webui自动化时,遇到操作视频的时候有时比较让人头疼,定位时会发现只有一个<video>标签,用selenium来实现的话比较麻烦,使用js后我们只需定位到video标签,然后通过js中处理video的相关属性和方法就可实现,我们继续往下看。二.实例用法1.获取视频的总时长(duration)#docu......
  • UWB定位 三基站加一个标签UWB相关资料 dwm1000模块 uwb定位 ds-twr测距 dw1000模块,
    UWB定位三基站加一个标签UWB相关资料dwm1000模块uwb定位ds-twr测距dw1000模块,双边双向测距,研创物联代码,最多支持4基站8标签测距,基站和标签、信道、速率等配置可通过USB虚拟串口进行切换,支持连接官方上位机(有QT5源码),可实现测距显示及定位坐标解算并显示位置,原理图,PCB,手册等......
  • 标签语义化
    合适的地方使用合理的标签一、HTML语义化让页面的内容结构化,便于浏览器,搜索引擎解析,容易阅读二、如何优化搜索引擎?【搜索引擎:SEO】通过分析搜索引擎的排名规律,了解各种搜索引擎怎样进行搜索、怎样抓取互联网页面、怎样确定特定关键词的搜索结果排名的技术1、关键词分析(也叫......
  • 用 SmartEdit 打开 SAP Commerce Cloud Storefront 时动态在 body 标签注入的 css cla
    当我们使用SAPSmartEdit打开SAPCommerceCloudStorefront时,在商户网站中,还必须在body标签中作为CSS类名包含以下唯一标识符:smartedit-page-uid-:指定指定目录和目录版本的唯一页面标识符。这是为了支持旧版实现而必需的。smartedit-page-uuid-:指定页面的全局唯一标识符(UU......
  • Git基础、Git指针、Git分支、Git标签
    什么是Git:它是一个分布式版本控制系统,支持断网操作,每个开发者都是一个仓库的完整克隆,每个人都是服务器         为什么要使用Git:它可以有效、高速的处理从很小到非常大的项目版本控制1.Git安装:   yum-yinstallgit  #使用yum安装Git           ......
  • (六)浮动框架、结构化标签
    一、浮动框架 二、结构化标签 ......