maven的核心概念

5.1 项目对象模型

说明:

maven根据pom.xml文件,把它转化成项目对象模型(POM),这个时候要解析依赖关系,然后去相对应的maven库中查找到依赖的jar包。

在clean,compile,test,package等阶段都有相应的Plug-in来做这些事情。

而这些plug-in会产生一些中间产物。

5.2 插件的位置

在maven解压后的位置E:\maven\bin有一个bin文件夹,里面有

一个文件m2.conf文件中指明了仓库的存储位置。

其中settings.xml文件中

这个说明了仓库中的位置。

这里的插件就是执行maven的各种命令所需要的插件

5.3  maven坐标

maven坐标的主要组成

groupId:定义当前maven项目属于哪个项目,一般是公司域名

artifactId:定义实际项目中的某一个模块,实际的项目名称

version:定义当前项目的当前版本

packaging:定义当前项目的打包方式

根据这些坐标,在maven库中可以找到唯一的jar包

依赖管理

6.1 继承管理

6.2 创建CCTV2项目

6.3 修改pom文件

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

<groupId>com.bw</groupId>

<artifactId>CCTV2</artifactId>

<version>0.0.1-SNAPSHOT</version>

</project>

6.4 创建CCTV2java类

在CCTV2中访问CCTV1中的方法,在传统的java项目中,是没有办法去访问到另外一个项目中的类和方法.

6.5 使用maven命令编译CCTV2项目

mvn compile

使用maven的特性去访问

6.6 修改CCTV2中的pom文件

<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>
<groupId>com.bw</groupId>
<artifactId>CCTV2</artifactId>
<version>0.0.1-SNAPSHOT</version> <dependencies>
<dependency>
<groupId>com.bw</groupId>
<artifactId>CCTV1</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
</dependencies>
</project>

6.7 执行mvn compile命令

只要这个命令执行完没有报错,就说明,在CCTV2访问到了CCTV1里的方法.

6.8 查看依赖关系

6.9 再添加junit支持修改pom文件

修改CCTV2的pom文件,添加junit支持

roject 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>
<groupId>com.bw</groupId>
<artifactId>CCTV2</artifactId>
<version>0.0.1-SNAPSHOT</version> <dependencies>
<dependency>
<groupId>com.bw</groupId>
<artifactId>CCTV1</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.0</version>
</dependency>
</dependencies>
</project>

6.10查看依赖关系

依赖的传递

7.1 依赖传递(第一种)

7.1.1 创建项目CCTV3

在CCTV3中,访问CCTV1中的方法.

用上面的传统的依赖的方式去做,应该在pom文件中,引入一次cctv1,就可以使用CCTV1中的方法.

7.2 引入CCTV2去

修改pom文件

<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>
<groupId>com.bw</groupId>
<artifactId>CCTV3</artifactId>
<version>0.0.1-SNAPSHOT</version> <dependencies>
<dependency>
<groupId>com.bw</groupId>
<artifactId>CCTV2</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
</dependencies>

</project>

7.3 编译CCTV3项目

mvn compile

7.3.1 报错原因

在CCTV3中,引入CCTV2,想访问CCTV1中的方法,

重点:我们是从资源库中找到的CCTV2

解决方式,去把CCTV2重新安装到资源库中.

7.4 再次重新编译CCTV3

解决错误: 是因为在资源库中找到了CCTV2,所以编译通过

7.5 查看一下依赖关系

7.6 第二种依赖关系

7.7 创建一个CCTV4项目

7.8 修改pom.xml文件

<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>
<groupId>com.bw</groupId>
<artifactId>CCTV4</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<dependencies>
<dependency>
<groupId>com.bw</groupId>
<artifactId>CCTV1</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
</dependencies>
</project>

7.9 编译安装CCTV4

执行mvn install命令

7.10 创建CCTV5项目

在CCTV5这个项目中,调用CCTV1这个项目的中的方法

7.11 修改pom文件

让CCTV5依赖CCTV4去;

<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>
<groupId>com.bw</groupId>
<artifactId>CCTV5</artifactId>
<version>0.0.1-SNAPSHOT</version>
<parent>
<groupId>com.bw</groupId>
<artifactId>CCTV4</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
</project>

7.12编译CCTV5

执行  mvn  compile命令

Maven的课堂笔记2的更多相关文章

  1. Maven的课堂笔记4

    9.Maven与MyEclipse2014结合 MyEclipse10以上的版本,对Maven支持的就比较好 9.2 Myeclipse配置 本地文件夹的C盘的.m2文件夹下必须得有这个setting ...

  2. Maven的课堂笔记3

    8 仓库管理 仓库可以分为三种:1.本地仓库(本机).2.私服(公司局域网内的maven服务器).3.中央仓库(互联上,例如 struts2官网,或者hibernate官网) 可以根据maven坐标定 ...

  3. Maven的课堂笔记1

    1 什么是maven? Maven是一个跨平台的项目管理工具,主要用于基于java平台的项目构建,依赖管理. Clean  compile  test  package  install   run ...

  4. 九章算法系列(#3 Binary Tree & Divide Conquer)-课堂笔记

    前言 第一天的算法都还没有缓过来,直接就进入了第二天的算法学习.前一天一直在整理Binary Search的笔记,也没有提前预习一下,好在Binary Tree算是自己最熟的地方了吧(LeetCode ...

  5. 九章算法系列(#5 Linked List)-课堂笔记

    前言 又是很长时间才回来发一篇博客,前一个月确实因为杂七杂八的事情影响了很多,现在还是到了大火燃眉毛的时候了,也应该开始继续整理一下算法的思路了.Linked List大家应该是特别熟悉不过的了,因为 ...

  6. 九章算法系列(#4 Dynamic Programming)-课堂笔记

    前言 时隔这么久才发了这篇早在三周前就应该发出来的课堂笔记,由于懒癌犯了,加上各种原因,实在是应该反思.好多课堂上老师说的重要的东西可能细节上有一些急记不住了,但是幸好做了一些笔记,还能够让自己回想起 ...

  7. 九章算法系列(#2 Binary Search)-课堂笔记

    前言 先说一些题外的东西吧.受到春跃大神的影响和启发,推荐了这个算法公开课给我,晚上睡觉前点开一看发现课还有两天要开始,本着要好好系统地学习一下算法,于是就爬起来拉上两个小伙伴组团报名了.今天听了第一 ...

  8. ocp11g培训内部教材_052课堂笔记(042)_体系架构

    OCP 052 课堂笔记 目录 第一部分: Oracle体系架构... 4 第一章:实例与数据库... 4 1.Oracle 网络架构及应用环境... 4 2.Oracle 体系结构... 4 3. ...

  9. ocp11g培训内部教材_051课堂笔记(047)_SQL

    OCP 051课堂笔记 目录 OCP 051课堂笔记... 1 第一章.Oracle命令类别:... 4 第二章.SQL的基本函数... 4 2.1 单行函数与多行函数... 4 2.2 单行函数的几 ...

随机推荐

  1. localStorage 知识点

    先补充下localStorage 知识点:JS对象读取形式:localStorage.name添加/修改localStorage.name = "xuanyuan"其中" ...

  2. 寒假集训——搜索 B - Sudoku

    #include <stdio.h> #include <stdlib.h> #include <string.h> #include <iostream&g ...

  3. mysql3

    一数据类型二约束条件一数据类型: 1 数字(默认都是有符号,宽度指的是显示宽度,与存储无关(只是int)) tinyint int bigint:个数,年龄,id,qq号,手机号 float:价格,身 ...

  4. oracle Lob对象空间回收测试

    备注:转自网络 SQL> create table t(time date,text clob);SQL> begin for i in 1 .. 10000 loop insert in ...

  5. QT+VS2013 1配置和安装

    相关参考:http://www.cnblogs.com/ranjiewen/p/5318768.html 1下载 VS2013 微软官网查找  https://www.visualstudio.com ...

  6. CentOS6.9 安装Oracle 11G 版本11.2.0.1.0

    安装实例与数据库 CentOS6.9 安装Oracle 11G 版本11.2.0.1.0 一.检查系统类别. 查看 系统的类别,这里是 64位系统:[root@localhost ~]# uname ...

  7. leetcode 235. Lowest Common Ancestor of a Binary Search Tree 236. Lowest Common Ancestor of a Binary Tree

    https://www.cnblogs.com/grandyang/p/4641968.html http://www.cnblogs.com/grandyang/p/4640572.html 利用二 ...

  8. ubuntu16.04安装配置nagios

    参考博文:https://www.howtoing.com/ubuntu-nagios/ 该博文真实有效可供参考,按照步骤,基本可以成功 一.安装的先决条件 sudo apt-get install ...

  9. java 面向对象String类

    1.String类:String 是不可变字符序列 1) char charAt(int index)返回字符串中第 index 个字符. 2) boolean equalsIgnoreCase(St ...

  10. DNS主从复制及区域传送

    前言 DNS主从复制,就是将主DNS服务器的解析库复制传送至从DNS服务器,进而从服务器就可以进行正向.反向解析了.从服务器向主服务器查询更新数据,保证数据一致性,此为区域传送.也可以说,DNS区域传 ...