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. python 之 初识面向对象

    编程的两种范式 我们知道,程序 = 特定的语法+数据结构+算法 好像这个和我们熟知的小说有类似之处啊,小说 = 人物+背景+情节 写小说呢,都是有模板的,so,写程序也是一样,我们把这个“模板”叫做编 ...

  2. [BJWC2011]元素

    嘟嘟嘟 题中说选的数的编号亦或和不能为0,也就是在这个集合中,不能用不同的选取方案亦或出相同的值.由此联想到线性基的一个性质是,每一个数都能由线性基中特定的一些数亦或得到. 所以我们就是要求出这些数的 ...

  3. sum-root-to-leaf-numbers (前序遍历)

    class Solution { public: int sumNumbers(TreeNode *root) { ; if (root == NULL) return sum; return pre ...

  4. CNAME记录和A记录

    主机名:host.abcd.com 别名:一台主机可以提供多种服务,比如http服务和mail服务. 访问http服务就可以使用域名:www.abcd.com 访问mail服务就可以使用域名:mail ...

  5. windows下手动安装 Apache+php+mysql

    PHP 为什么先说php,因为apache的配置要写入php的一些路径 http://php.net/downloads.php  选择windows donwload 选择Thread Safe的版 ...

  6. <mvc:annotation-driven />注解意义(转)

    文章转自http://elf8848.iteye.com/blog/875830 http://www.cnblogs.com/shuo1208/p/5552134.html 暂时只知道对json的支 ...

  7. labellmg使用方法

    https://www.cnblogs.com/Terrypython/p/9577657.html

  8. 浅淡个人学习嵌入式Linux过程

    我专业是电子信息工程,在初入大学的时候,我们的班主任便要我们多多去了解一些关于电子方面的知识.后来我了解到了嵌入式,继而了解到了嵌入式Linux.其实我们学习linux差不多就学习linux内核,但是 ...

  9. Vue2 第二天学习

    个人小总结:1年多没有写博客,感觉很多知识点生疏了,虽然工作上能解决问题,但是当别人问到某个知识点的时候,还是迷迷糊糊的,所以坚持写博客是硬道理的,因为大脑不可能把所有的知识点记住,有可能某一天忘了, ...

  10. http/2 多路复用技术

    虽然 HTTP 1.1 默认启用长TCP连接,但所有的请求-响应都是按序进行的(这里的长连接可理解成半双工协议.即便是HTTP 1.1引入了管道机制,也是如此).复用同一个TCP连接期间,即便是通过管 ...