一、VIP课程:互联网工程专题 03-Maven基本概念与核心配置

概要:

  1. maven 基本概念
  2. maven 核心配置

一、maven  安装与核心概念

概要:

  1. maven 安装
  2. maven 编译(compile)
  3. 执行测试用例(test)
  4. maven 打包
  5. maven  依懒管理

1、安装

  1. 官网下载 Maven (https://maven.apache.org/
  2. 解压指定目录
  3. 配置环境变量
  4. 检查安装是否成功 (mvn -version)

2、maven 编译

maven 编译过程演示

l  创建maven项目。

l  创建src 文件

l  编写 pom 文件

l  执行编译命令

请注意,在上述配置和命令当中,我们并没有指定源码文件在哪里?最后编译到哪里去?在这里

maven 采用了约定的方式从指项目结构中获取源码与资源文件进行编译打包。

  1. 主源码文件:${project}/src/main/java
  2. 主资源文件:${project}/src/main/resources
  3. 测试源码文件:${project}/src/test/java
  4. 测试资源文件:${project}/src/test/resources

3、Maven打包

maven 打包演示

#mvn 打包命令

mvn package

4、maven 单元测试演示

l  编写测试类

l  执行测试命令

执行完指令发现没有执行我们的测试方法,这是为何?原因在于maven 当中的测试类又做了约定,约定必须是Test开头的类名与test 开头的方法才会执行。

重新修改方法名后 在执行mvn test 即可正常执行。

通常测试我们是通过junit 来编译测试用例,这时就就需添加junit 的依赖。

5、maven 依赖管理

l   在pom 文件中添加junit 依赖

l  修改测试类,加入junit 代码

l  执行测试命令

提问:

在刚才的演示过程当中 ,junit jar包在哪里?是怎么加入到classPath 当中去的?maven 是在执行test 命令的时间 动态从本地仓库中去引入junit jar 包,如果找不到就会去远程仓库下载,然后在引入。

本地仓库位置:

本地仓库位置默认在 ~/.m2/respository 下

要修改 ${M2_HOME}/conf/settings.xml  来指定仓库目录

<!-- 指定本地仓库目录-->

<localRepository>G:\.m2\repository</localRepository>


二、maven核心配置

概要:

  1. 项目依懒(内部、外部)
  2. 项目聚合与继承
  3. 项目构建配置

项目依懒

项目依赖是指maven 通过依赖传播、依赖优先原则、可选依赖、排除依赖、依赖范围等特性来管理项目ClassPath。

1、依赖传播特性:

我们的项目通常需要依赖第三方组件,而第三方组件又会依赖其它组件遇到这种情况Maven会将依赖网络中的所有节点都会加入ClassPath当中,这就是Maven的依赖传播特性。

举例演示Spring MVC的依赖网络

<!-- 添加spring web mvc演示 -->

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-webmvc</artifactId>

<version>5.0.10.RELEASE</version>

</dependency>

在刚刚的演示当中,项目直接依赖了spring-webmvc 叫直接依赖,而对commons-logging 依赖是通过webmvc传递的所以叫间接依赖。

2、依赖优先原则

基于依赖传播特性,导致整个依赖网络会很复杂,难免会出现相同组件不同版本的情况。Maven此时会基于依赖优先原则选择其中一个版本。

  第一原则:最短路径优先。

  第二原则:相同路径下配置在前的优先。

第一原则演示

<!-- 直接添加commons-logging -->

<dependency>

<groupId>commons-logging</groupId>

<artifactId>commons-logging</artifactId>

<version>1.2</version>

</dependency>

上述例子中commons-logging 通过spring-webmvc 依赖了1.1.3,而项目中直接依赖了1.2,基于最短路径原则项目最终引入的是1.2 版本。

第二原则演示:

步骤:

  1. 添加一个新工程Project B
  2. 配置Project B 依赖 spring-web.3.2.9.RELEASE
  3. 当前工程直接依赖 Project B

配置完之后,当前工程 project A 有两条路径可以依赖 spring-web,选择哪一条 就取决于 对 webmvc 和 Project B的配置先后顺序。

Project A==> spring-webmvc.4.0.0.RELEASE ==> spring-web.4.0.0.RELEASE

Project A==>   Project B 1.0.SNAPSHOT ==>spring-web.3.2.9.RELEASE

注意:在同一pom文件,第二原则不在适应。如下配置,最终引用的是1.2 版本,而不是配置在前面的1.1.1版本。

原文地址:https://www.cnblogs.com/MarlonKang/p/12356362.html

时间: 2024-10-09 04:16:48

一、VIP课程:互联网工程专题 03-Maven基本概念与核心配置的相关文章

一、VIP课程:互联网工程专题 05-快速掌握Jenkins原理与核心功能

第五课:快速掌握jenkins核心功能.docx 2.164 (2019-02) and newer: Java 8 or Java 11 2.jenkins 概述 jenkins 就是为了满足上述持续集成的要点而设计的一款工具,其主体框架采用JAVA开发,实质内部功能都是由各种插件实现,极大提高了系统的扩展性.其不仅可以满足JAVA系统的集成,也可以实现PHP等语言的集成发布.通过其pipeline 插件,用户可以随自己需要定制集成流程. 2.下载安装jenkins 下载:jenkins 支持

一、VIP课程:互联网工程专题 01-Git基本概念与核心命令掌握

第一课:Git基本概念与核心命令掌握.docx 课程概要: GIT 体系概述 GIT 核心命令使用 GIT 底层原理 1.安装git 客户端安装 官方客户端: httpsd://git-scm.com/downloads 其它客户端:https://tortoisegit.org/download/ 原文地址:https://www.cnblogs.com/MarlonKang/p/12300545.html

Java架构师VIP课程一期共89G视频教程 luban it教程

集数合计:14讲Java视频教程详情描述: A0505<Java架构师VIP课程一期共89G视频教程>Java架构师VIP课程一期共89G视频教程 鲁班学院 课件资料全Java视频教程目录: 百度网盘下载点击 ├─撸搬架构├─01.并发专题(一)│      2018-09-11(1)-Java内存模型│      2018-09-13(2)-synchronized原理│      2018-09-16(3)-volatile实现机制│      2018-09-18(4)-DCL-单例模式

鲁班 Java架构师VIP课程一期共89G视频教程 luban it教程

Java视频教程详情描述: A0505<Java架构师VIP课程一期共89G视频教程>Java架构师VIP课程一期共89G视频教程 鲁班学院 课件资料全Java视频教程目录 ├─撸搬架构├─01.并发专题(一)│      2018-09-11(1)-Java内存模型│      2018-09-13(2)-synchronized原理│      2018-09-16(3)-volatile实现机制│      2018-09-18(4)-DCL-单例模式│      2018-09-21(

鲁班学院最新架构师资料《Java架构师VIP课程》

鲁班学院最新架构师资料<Java架构师VIP2019课程一期> 课程目录: ├─01.并发专题(一) │ 2018-09-11(1)-Java内存模型 │ 2018-09-13(2)-synchronized原理 │ 2018-09-16(3)-volatile实现机制 │ 2018-09-18(4)-DCL-单例模式 │ 2018-09-21(5)-并发基础-AQS.CAS2 │ 2018-09-25(6)-并发集合 │ 2018-09-27(7)-原子操作-基本类型 │ 2018-09-3

1.Maven+SpringMVC+Eclipse软件安装配置,Maven报插件错误,Eclipse总是卡死的解决办法,导入一个maven工程后 一直显示importing maven project

 使用Maven+SpringMVC+Eclipse软件安装配置过程中的问题: 1.Eclipse总是卡死的解决办法: 一:内存不足所以会卡死,配置一下eclipse.ini修改这几个值就好了-XX:MaxPermSize=768m-Xms1024m-Xmx3072m搜索 二:修改window->preferences --- > JAVA->Edittor->Hovers,将右侧所有复选框清空. 2.因为eclipse上一次未正常关闭,导致启动卡死,错误日志为: [plain

maven工程运行maven test提示JAVA_HOME 未配置的解决

maven工程运行maven test提示JAVA_HOME 未配置的解决: ----- 以下内容转自http://blog.sina.com.cn/s/blog_9ba71d0b01014bux.html JDK (Java Development Kit) Java开发工具包,很直白的说就是为开发人员准备的SDK. SDK (Software Development Kit)软件开发包.所以我们解压JDK 会发现在安装位置 有一个JDK有一个JRE(Java Runtime Envirome

Intellij IDEA 将工程转换成maven工程 详解

1> 右键工程,点击 Add Framework Support 2> 选中 Maven,再点击 OK 3> 工程根目录自动生成 pom.xml 文件,这样 工程就支持 Maven 版权声明:本文为博主原创文章,未经博主允许不得转载. http://blog.csdn.net/chenshun123/article/details/53844078 原文地址:https://www.cnblogs.com/hfultrastrong/p/8584312.html

图灵学院VIP课程:系统化学习 精准化辅导

图灵学院VIP课程分为四大知识模块,架构.人工智能.区块链以及大数据.图灵学院多年如一日对课程的精心钻研和对知识点的梳理.研究和总结,可以帮助学生提高学习技术知识的效率.通过掌握这些VIP课程,推动学生在将来的职业之路上更加顺利地求职就业. 1. 架构 架构的描述语言用于描述软件的体系架构,现在已有多种架构描述语言,如Acme .Wright.C2.Darwin.架构中有关软件整体结构与组件的抽象描述,用于指导大型软件系统各个方面的设计.一个架构师需要足够的想像力, 扩展不同维度的目标需求,为目