Maven核心概念

这篇具有很好参考价值的文章主要介绍了Maven核心概念。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、Maven基础知识

Apache Maven是一个项目管理和构建工具,它基于项目对象模型(POM)的概念,通过一小段描述信息来管理项目的构建、报告和文档。

1、Maven模型

Maven核心概念

2、仓库分类

  • 本地仓库:自己计算机上的一个目录
  • 中央仓库:由Maven团队维护的全球唯一的仓库
    地址:https://repo1.maven.org/maven2/
  • 远程仓库(私服):一般由公司团队搭建的私有仓库
  • jar包的查找顺序为:本地仓库->远程仓库->中央仓库

3、Maven常用命令

上节我们演示了Maven的使用,使用的就是如下命令:

  • compile:编译
  • clean:清理
  • test:测试
  • package:打包
  • install:安装

4、Maven生命周期

  • Maven构建项目生命周期描述的是一次构建过程经历了多少事件
  • Maven对项目构建的生命周期划分为3套
    clean:清理工作
    default:核心工作,例如编译,测试,打包,安装等
    site:产生报告,发布站点等

Maven核心概念

5、Maven坐标详解

Ⅰ、什么是坐标?

Maven中的坐标是资源的唯一标识

使用坐标来定义项目或引入项目中需要的依赖

Ⅱ、Maven坐标主要组成

groupId:定义当前Maven项目隶属组织名称(通常域名反写,例如:com.liming)

artifactId:当前项目的模块名称(类似于:maven)

version:版本

<groupId>com.liming</groupId>
<artifactId>maven</artifactId>
<version>1.0-SNAPSHOT</version>

6、依赖范围
Maven核心概念

举例:

<dependencies>
		<dependency>
			<!—坐标 -->
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.12</version>
			<!-- 依赖的范围 -->
			<scope>test</scope>
		</dependency>
	</dependencies>

二、Maven进阶

1、依赖传递

如果A依赖B,B依赖C,那么A→B和B→C都是直接依赖,而A→C是间接依赖。
当存在间接依赖的情况时,主工程对间接依赖的jar可以访问吗?这要看间接依赖的jar包引入时的依赖范围——只有依赖范围为compile时可以访问。

2、依赖传递冲突问题

  • 路径优先:路径最短者优先
  • 声明优先:路径相同时先声明者优先 (这里“声明”的先后顺序指的是dependency标签配置的先后顺序)

3、可选依赖与排除依赖

可选依赖指对外隐藏当前所依赖的资源——不透明

<dependency>
	<groupId>com.liming</groupId>
	<artifactId>maven_01</artifactId>
	<version>1.0-SNAPSHOT</version>
	<!--可选依赖是隐藏当前工程所依赖的资源,隐藏后对应资源不具有依赖传递性-->
	<optional>false</optional>
</dependency>

排除依赖指主动断开依赖的资源,被排除的资源无需指定版本——不需要

举例:
当前工程为public,直接依赖environment。environment依赖commons-logging的1.1.1对于public来说是间接依赖。当前工程public直接依赖commons-logging的1.1.2加入exclusions配置后可以在依赖environment的时候排除版本为1.1.1的commons-logging的间接依赖。

Environment工程:
<dependency>
	<groupId>commons-logging</groupId>
	<artifactId>commons-logging</artifactId>
	<version>1.1.1</version>
</dependency>


当前工程:
<dependency>
	<groupId>com.liming.maven</groupId>
	<artifactId>Environment</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<!-- 依赖排除 -->
	<exclusions>
		<exclusion>
			<groupId>commons-logging</groupId>
			<artifactId>commons-logging</artifactId>
		</exclusion>
	</exclusions>
</dependency>
<dependency>
	<groupId>commons-logging</groupId>
	<artifactId>commons-logging</artifactId>
	<version>1.1.2</version>
</dependency>

4、继承

继承描述的是两个工程之间的关系,与Java中的继承相似,子工程可以继承父工程中的配置信息,常见于依赖关系的继承

步骤:

1、创建Maven模块,设置打包类型为pom

<packaging>pom</packaging>

2、在父工程的pom文件中配置依赖关系(子工程将沿用父工程中的依赖关系)

 <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>5.2.10.RELEASE</version>
        </dependency>
        ......
    </dependencies>

3、配置子工程中可选的依赖关系

<dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>druid</artifactId>
                <version>1.2.13</version>
            </dependency>
        </dependencies>
        ......
    </dependencyManagement>

4、在子工程中配置当前工程所继承的父工程

<!--定义该工程的父工程-->
    <parent>
        <groupId>com.liming</groupId>
        <artifactId>maven_parent</artifactId>
        <version>1.0-SNAPSHOT</version>
        <!--填写父工程的pom文件-->
        <relativePath>../maven_parent/pom.xml</relativePath>
    </parent>

5、在子工程中配置使用父工程中可选依赖的坐标

</dependencies>
	<dependency>
          <groupId>com.alibaba</groupId>
          <artifactId>druid</artifactId>
     </dependency>
</dependencies>

Maven核心概念
5、属性

以对Spring的jar包依赖为例:Spring的每一个版本中都包含spring-corespring-context等jar包。我们应该导入版本一致的Spring jar包,而不是使用4.0.0的spring-core的同时使用4.1.1的spring-context。

问题是如果我们想要将这些jar包的版本统一升级为4.1.1,是不是要手动一个个修改呢?显然,我们有统一配置属性的方式:

<properties>
	<spring.version>4.1.1.RELEASE</spring.version>
</properties>

<dependency>
 <groupId>org.springframework</groupId>
 <artifactId>spring-core</artifactId>
 <version>${spring.version}</version>
</dependency>
<dependency>
 <groupId>org.springframework</groupId>
 <artifactId>spring-context</artifactId>
 <version>${spring.version}</version>
</dependency>
<dependency>
 <groupId>org.springframework</groupId>
 <artifactId>spring-jdbc</artifactId>
 <version>${spring.version}</version>
</dependency>
<dependency>
 <groupId>org.springframework</groupId>
 <artifactId>spring-orm</artifactId>
 <version>${spring.version}</version>
</dependency>
<dependency>
 <groupId>org.springframework</groupId>
 <artifactId>spring-web</artifactId>
 <version>${spring.version}</version>
</dependency>
<dependency>
 <groupId>org.springframework</groupId>
 <artifactId>spring-webmvc</artifactId>
 <version>${spring.version}</version>
</dependency>

这样一来,进行版本调整的时候只改一改地方就行了

6、配置文件加载属性

1、定义属性

<!--定义自定义属性-->
    <properties>
        <spring.version>5.2.10.RELEASE</spring.version>
        <junit.version>4.12</junit.version>
        <jdbc.url>jdbc:mysql://127.0.0.1:3306/ssm_db</jdbc.url>
    </properties>

2、配置文件中引入属性

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=${jdbc.url}
jdbc.username=root
jdbc,password=root

3、开启资源目录加载属性的过滤器

<build>
        <resources>
            <resource>
                <directory>${project.basedir}/src/main/resources</directory>
                <filtering>true</filtering>
            </resource>
        </resources>
</build>

4、配置maven打war包时,忽略web.xml检查

<plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-war-plugin</artifactId>
        <version>3.2.3</version>
        <configuration>
            <failOnMissingWebXml>false</failOnMissingWebXml>
        </configuration>
</plugin>

7、版本管理

1、工程版本:

SNAPSHOT(快照版本)

Maven核心概念

RELEASE(发布版本)

Maven核心概念

2、发布版本:文章来源地址https://www.toymoban.com/news/detail-407361.html

  • alpha版
  • beta版
  • 纯数字版

到了这里,关于Maven核心概念的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • Stable Diffusion XL(SDXL)核心基础知识

    Stable Diffusion XL(SDXL)核心基础知识

    Stable Diffusion XL 或 SDXL 是最新的图像生成模型,与以前的 SD 模型(包括 SD 2.1)相比,它专为更逼真的输出而定制,具有更详细的图像和构图。与Stable DiffusionV1-v2相比,Stable Diffusion XL主要做了如下的优化: 对Stable Diffusion原先的U-Net,VAE,CLIP Text Encoder三大件都做了改进: U-N

    2024年02月01日
    浏览(14)
  • FPGA基础知识-层次建模的概念

    FPGA基础知识-层次建模的概念

    目录 学习目标 学习内容 1.设计方法学  2.设计实例 3.逻辑仿真实例 学习时间 总结 提示:这里可以添加学习目标 理解数字电路设计中自底向上和自顶向下的设计方法; 解释verilog中模块和模块实例之间的区别; 学习从4中不同的抽象角度来描述同一个模块; 解释仿真中的各个

    2024年02月08日
    浏览(15)
  • 密码基础知识——密码的概念与作用

    密码基础知识——密码的概念与作用

    密码是指采用 特定变换 的方法对 信息 等进行 加密保护、安全认证 的 技术、产品和服务 。 在我国,密码分为 核心密码、普通密码和商用密码 ,其中商用密码用于保护 不属于国家秘密 的信息。 从内容上看,密码技术包括密码编码、实现、协议、安全防护、分析破译,以

    2023年04月26日
    浏览(12)
  • 音频基础知识(一) 音频基础概念 | 采样 | 量化 | 编码 | 常见音频格式

    音频基础知识(一) 音频基础概念 | 采样 | 量化 | 编码 | 常见音频格式

    🚀 个人简介:CSDN「 博客新星 」TOP 10 , C/C++ 领域新星创作者 💟 作    者: 锡兰_CC ❣️ 📝 专    栏: 【音视频基础知识】 🌈 若有帮助,还请 关注➕点赞➕收藏 ,不行的话我再努努力💪💪💪   声音的三要素:频率、振幅、波形。 1、频率   声波的频率,也就是

    2024年03月22日
    浏览(15)
  • USB的基本概念和基础知识 01

    USB的基本概念和基础知识 01

    本文主要介绍USB的基本概念和基础知识 USB USB 中文网 有很多资料, 很实用哦. USB 是通用串行总线 (Universal Serial Bus) 的缩写. 版本 理论最高速度 USB 1.0 Low Speed 1.5Mb/s 或 0.1875MB/s USB 1.0 Full Speed 12Mb/s 或 1.5MB/s USB 1.1 (即 USB 1.0 Full Speed) 12Mb/s 或 1.5MB/s USB 2.0 Full Speed(即USB 1.1) 12Mb/s 或

    2024年02月11日
    浏览(13)
  • Stable Diffusion之核心基础知识和网络结构解析

    Stable Diffusion之核心基础知识和网络结构解析

    1. 文生图(txt2img) 文生图任务是指将一段文本输入到SD模型中,经过一定的迭代次数,SD模型输出一张符合输入文本描述的图片。 步骤一: 使用 CLIP Text Encode 模型将输入的人类文本信息进行编码,生成与文本信息对应的Text Embeddings特征矩阵; 步骤二: 输入文本信息,再用ran

    2024年04月15日
    浏览(17)
  • Stable Diffusion(SD)核心基础知识——(文生图、图生图)

    Stable Diffusion(SD)核心基础知识——(文生图、图生图)

    Stable Diffusion是计算机视觉领域的一个生成式大模型,可以用于文生图,图生图,图像inpainting,ControlNet控制生成,图像超分等丰富的任务。 文生图(txt2img) 文生图任务是指将一段文本输入到SD模型中,经过一定的迭代次数,SD模型输出一张符合输入文本描述的图片。 步骤一

    2024年01月22日
    浏览(22)
  • 深入浅出解析LoRA完整核心基础知识 | 【算法兵器谱】

    深入浅出解析LoRA完整核心基础知识 | 【算法兵器谱】

    Rocky Ding 公众号:WeThinkIn 【算法兵器谱】栏目专注分享AI行业中的前沿/经典/必备的模型论文,并对具备划时代意义的模型论文进行全方位系统的解析,比如Rocky之前出品的爆款文章Make YOLO Great Again系列。也欢迎大家提出宝贵的优化建议,一起交流学习💪 大家好,我是Rocky。

    2024年02月11日
    浏览(15)
  • MyBatis基础知识和快速入门、MyBatis核心配置文件讲解

    MyBatis基础知识和快速入门、MyBatis核心配置文件讲解

    什么是Mybatis MyBatis 是一个优秀的基于java的 持久层框架 ,它内部封装了jdbc,使开发者只需要关注sql语句本身,而不需要花费精力去处理加载驱动、创建连接、创建statement等繁杂的过程。 mybatis通过xml或注解的方式将要执行的各种 statement配置起来,并通过java对象和statement中

    2024年02月04日
    浏览(45)
  • 【创作赢红包】ElasticSerach基础概念知识梳理

    【创作赢红包】ElasticSerach基础概念知识梳理

    目录 ES概念介绍 1、ES核心概念组成 2、ES数据类型介绍 2.1 字符串型 2.2 数值型 2.3 布尔型 boolean 2.4 二进制类型 binary 2.5 范围类型 2.6 日期型 date 2.7 复杂数据类型 3、特点 4、应用场景举例 Ela ticsearch,简称为ES, ES是一个开源的高扩展的分布式全文搜索引擎,是整个Elastic Stack技

    2023年04月26日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包