[Maven] 02

您所在的位置:网站首页 pom模型能判断陆地吗 [Maven] 02

[Maven] 02

2024-07-11 13:51:17| 来源: 网络整理| 查看: 265

POM 模型 1 依赖关系

Maven 一个核心的特性就是依赖管理。当我们处理多模块的项目(包含成百上千个模块或者子项目),模块间的依赖关系就变得非常复杂,管理也变得很困难。针对此种情形,Maven 提供了一种高度控制的方法。

通俗理解:

依赖谁就是将谁的 jar 包添加到本项目中。可以依赖中央仓库的 jar,也可以依赖当前开发中其他项目打包后的 jar 包。

在 pom.xml 文件根元素 project 下的 dependencies 标签中,配置依赖信息,可以包含多个 dependence 元素,以声明多个依赖。每个依赖 dependence 标签都应该包含以下元素:groupId, artifactId, version : 依赖的基本坐标, 对于任何一个依赖来说,基本坐标是最重要的, Maven 根据坐标才能找到需要的依赖。

依赖的传递性

依赖传递性是 Maven2.0 的新特性。假设你的项目依赖于一个 jar 包,而这个 jar 包又依赖于其他 jar 包。你不必自己去找出所有这些依赖,你只需要加上你直接依赖的 jar 包的坐标,Maven 会隐式的把这些 jar 包间接依赖的库也加入到你的项目中。这个特性是靠解析从远程仓库中获取的依赖 jar 包的项目文件实现的。这些项目的所有依赖都会加入到项目中这就是依赖传递性。

如果 A 依赖了 B,那么 C 依赖 A 时会自动把 A 和 B 都导入进来。创建 A 项目后,选择 IDEA 最右侧 Maven 面板 lifecycle,双击 install 后就会把项目安装到本地仓库中,其他项目就可以通过坐标引用此项目。

依赖相同资源的依赖原则 1.2.1 第一原则:最短路径优先原则

“最短路径优先”意味着项目依赖关系树中路径最短的版本会被使用。例如,假设 A、B、C 之间的依赖关系是 A->B->C->D(2.0)和 A->E->(D1.0),那么 D(1.0)会被使用,因为A 通过 E 到 D 的路径更短。

1.2.2 第二原则:最先声明原则

依赖调解第一原则不能解决所有问题,比如这样的依赖关系:A–>B–>Y(1.0),A–>C–>Y(2.0),Y(1.0)和 Y(2.0)的依赖路径长度是一样的,都为 2。那么到底谁会被解析使用呢?

在 maven2.0.8 及之前的版本中,这是不确定的,但是 maven2.0.9 开始,为了尽可能避免

构建的不确定性,maven 定义了依赖调解的第二原则:第一声明者优先。在依赖路径长度

相等的前提下,在 POM 中依赖声明的顺序决定了谁会被解析使用。顺序最靠前的那个依赖

优胜。

1.3 排除依赖

exclusions: 用来排除传递性依赖 其中可配置多个 exclusion 标签,每个 exclusion 标签

里面对应的有 groupId, artifactId 两项基本元素。

org.springframework spring-context 5.2.4.RELEASE org.springframework spring-aop 继承关系 什么是继承关系

Maven 中的继承跟 Java 中的继承概念一样,需要有父项目以及子项目。我们可以将项目中的依赖和插件配置提取出来在父项目中集中定义,从而更方便的管理项目的依赖以及插件。注意父项目类型一定为 POM 类型。

继承的优点

1) 依赖或插件的统一管理(在 parent 中定义,需要变更 dependency 版本时,只需要修改一处)。

2) 代码简洁(子 model 只需要指定 groupId,artifactId 即可)。

3) dependencyManagement 是“按需引入”,即子 model 不会继承 parent 中dependencyManagement 所有预定义的 dependency。

Maven 中的多继承

在 Maven 中对于继承采用的也是单一继承,也就是说一个子项目只能有一个父项目,但是有的时候我们项目可能需要从更多的项目中继承,那么我们可以在子项目中通过添加标记来实现多继承。在子项目的中每个标记就一个父工程定义,同时还需要添加标记,值为 pom。添加标记,值为import。

com.lin parent_a 1.0-SNAPSHOT pom import com.lin parent_b 1.0-SNAPSHOT pom import 聚合关系

Maven 的聚合特性可以帮助我们把多个项目基于多个模块聚合在一起,这样能够更加方便项目的管理。

前提:继承。

聚合包含了继承的特性。

聚合时多个项目的本质还是一个项目。这些项目被一个大的父项目包含。且这时父项目类型为 pom 类型。同时在父项目的 pom.xml 中出现表示包含的所有子模块。即使在 idea 中,也可以使用聚合在一个窗口创建多个项目。

创建聚合模块

1.创建父工程pom

2.右键父模块,→module

删除聚合模块步骤

右键模块--> remove module

右键项目 --> delete 在父项目中 pom.xml 中中删除模块名 Maven 内置插件

Maven 自身拥有很多内置插件,每一个内置插件都代表了 Maven 的一种行为。Maven在管理项目整个生命周期时,在不同的阶段处理的过程都是使用插件来具体完成。如:

构建项目时使用构建插件、

编译项目时使用编译插件、

清除构建使用清除构建的插件、

测试项目时使用测试插件、

打包时使用资源拷贝插件以及打包插件。

我们可以在不同阶段使用 Maven 中的不同命令来触发不同的插件来执行不同的工作。换言之,Maven 的插件是需要依赖命令来执行的。Maven 在管理插件时也是通过坐标的概念和管理依赖的方式相同,通过坐标来定位唯一的一个插件。

在一般情况下,我们不需要额外配置 Maven 的内置插件,除非我们需要对插件做额外配置时才需要配置内置插件。如果我们重新配置了内置插件,那么则以我们配置的为主。

Maven 的插件配置需要在 pom.xml 文件中的标签中使用来配置。现在在很多的 IDE 中都已经把 Maven 的常用命令通过界面中的按钮来体现,我们只要点击相应的按钮就等同于执行了相应的命令。

配置编译插件 在 setings.xml 中配置全局编译插件(了解就好,因为最早就配置了) jdk-1.8 true 1.8 1.8 1.8 1.8 在 pom.xml 文件中配置局部的编译插件 org.apache.maven.plugins maven-compiler-plugin 3.8.1 1.8 1.8 UTF-8 资源拷贝插件

Maven 在打包时默认只将 src/main/resources 里的配置文件拷贝到项目中并做打包处理,而非 resource 目录下的配置文件在打包时不会添加到项目中。我们在使用 MyBatis时,如果接口与 Mapper 文件在同一个目录中,在默认的情况下 Maven 打包的时候,对于src/main/java 目录只打包源代码,而不会打包其他文件。所以 Mapper 文件不会打包到最终的 jar 文件夹中,也不会输出到 target 文件夹中,此时运行代码操作数据库时会报异常。

解决方案:

1) 将 Mapper 文件放入到 resources 目录中。(推荐)

2) 配置资源拷贝插件,指定其拷贝文件的位置。

src/main/java **/*.xml src/main/resources **/*.xml **/*.properties 扩展插件 Tomcat 插件

Tomcat 插件是 Maven 的扩展插件,其作用是为基于 Maven 开发的 Web 项目提供一个内置的 Tomcat 支持,这样我们在开发阶段可以不在依赖外部的 Tomcat 来运行 Web 项目,该插件目前使用的 Tomcat 版本为 Tomcat7。该插件的作用很强大,除了提供了 Tomcat以外,还可以通过该插件实现项目的远程热部署。

org.apache.tomcat.maven tomcat7-maven-plugin 2.2 8080 / Mybatis Generator 插件

Mybatis Generator 插件可以根据数据库自动生成实体类、单表查询接口映射 xml 文件以及 POJO。

1.创建 Users 表

CREATE TABLE `users` ( `userid` int(11) NOT NULL, `username` varchar(20) DEFAULT NULL, `userage` int(11) DEFAULT NULL, PRIMARY KEY (`userid`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

2.修改 POM 文件,添加插件

org.mybatis.generator mybatis-generator-maven-plugin 1.3.5 mysql mysql-connector-java 5.1.38 ${project.basedir}/src/main/resources/generato rConfig.xml true true

添加 generator 配置文件

添加 generator 配置文件的 DTD 文件 运行 generator 插件生成代码 插件管理

在 Maven 中提供了和依赖管理相同的方式用于来管理插件,我们可以在父工程中声明插件,然后在具体的子项目中按需引入不同的插件。

父工程 POM

org.apache.tomcat.maven tomcat7-maven-plugin 2.2 org.mybatis.generator mybatis-generator-maven-plugin 1.3.5

子工程 POM

org.apache.tomcat.maven tomcat7-maven-plugin 8080 / org.mybatis.generator mybatis-generator-maven-plugin mysql mysql-connector-java 5.1.38 ${project.basedir}/src/main/resources/generato rConfig.xml true true


【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭