简介:    什么是maven

是apache下的一个开源项目,是纯java开发,并且只是用来管理java项目的.

Maven的好处?

节省空间

就是对jar包的统一管理就是对jar包的统一管理,依赖管理

一键构建, 可跨平台

1.自动化构建和项目管理工具

Ant→Make→Maven→Gradle

2.Maven概述

①读音:妹文、麦文

②Maven作用一:自动化构建

③Maven作用二:依赖管理

④Maven作用三:项目信息管理

3.自动化构建

①构建[build]:将程序员编写的代码从源文件到服务器部署的整个过程。

清理→编译→测试→报告→打包→部署→运行……

②自动化构建:将构建过程中的各个操作步骤交给构建工具自动完成。

4.依赖管理

①依赖复杂性

[1]路径最短者优先

MakeFriends --------> HelloFriends----------->Hello

||

log4j.2.1.14    ------->     log4j.2.1.17

[2]路径相同时,先声明者优先

MakeFriends --------> HelloFriends ------>log4j.2.1.14

-------------->OurFriends   ------->log4j.2.1.17

②版本冲突的解决方案

[1]调节原则:

[1]路径最短者优先原则

[2]路径相同时,先声明者优先原则

[2]排除原则

<dependency>

<groupId>javax.servlet</groupId>

<artifactId>servlet-api</artifactId>

<version>2.5</version>

<exclusions>

<exclusion>

<groupId></groupId>

<artifactId></artifactId>

<!--这里不需要指定版本号 -->

</exclusion>

</exclusions>

<scope>provided</scope>

</dependency>

[3]版本锁定原则

<dependencyManagement>

<dependencies>

<dependency>

<!--jar包坐标 -->

<groupId></groupId>

<artifactId></artifactId>

<version></version>

</dependency>

</dependencies>

</dependencyManagement>

版本锁定之后,后面再使用到这个的 依赖的时候,就不要写版本号了!

而且如果有多个相同的需要锁定的jar包的版本号一致的话,我们可以单独提取到properties标签中,

在properties标签中,子标签自己定义,标签的值就是版本号,下面只需要在依赖的地方用${}引用就可以了!

③依赖方式

[1]在pom.xml配置文件中使用dependencies/dependency元素配置依赖信息

[2]通过目标jar包的坐标找到被依赖的文件

④依赖范围

默认compile:当前所依赖的jar包是当前Maven工程中所有类都需要使用的,最终也需要参与打包。

test:只是当前工程中的测试类需要,最终不参与打包。

provided:当工程在服务器上运行起来后,可以由服务器提供,所以也只是在开发或测试时使用,部署到服务器上时就不需要。    ……

⑤一个自己开发的Maven工程,需要执行“安装”命令,才能够被放入到仓库中。

5.项目信息管理   将项目信息生成一个静态站点,用于展示。

6.Maven程序本身安装

①要求当前系统环境下配置了JAVA_HOME

在CMD命令行中输入:echo %JAVA_HOME% 如果能出来JDK的安装目录,说明我们配置了JAVA环境

②将Maven的ZIP压缩包解压到一个非中文无空格目录下【maven.apache.org官方网站下载jar包】

apache-maven-3.3.9-bin.zip

③.配置环境变量,用mvn -v查看是否正确配置了maven【要配置jdk,  maven3.3.9这个版本所需的jdk版本必须要1.7以上】

path:

D:\DevSoft\apache-maven-3.3.9\bin

mvn -v查看maven版本

④.先了解一下maven的目录结构:

projectname

-src

-main

-java

-package

-resources【配置文件或者说资源文件】

-test

-java

-package

-resources

pom.xml

按照上面的maven的目录结构创建一个maven项目,参照word文档!

⑤当针对某个Maven工程执行诸如“编译”、“测试”、“打包”、“部署”等命令时,需要进入到pom.xml所在的目录下执行。

7.关于Maven联网

①联网下载内容:当前命令需要的Maven插件

②Maven主程序仅负责宏观调度,并不能执行具体的命令。而具体的命令是通过Maven插件完成的。

③Maven主程序会首先到本地仓库目录下查找需要的插件,若没有则联网从“中央仓库”下载。若当前环境不能联网则无法执行构建命令。

④可以修改Maven默认的本地仓库路径,使其指向一个提前下载好的目录    配置文件路径

Maven解压目录/conf/settings.xml

修改

<localRepository>D:\Maven\Repository</localRepository>

mvn -v 查看maven的版本号

clean

compile 编译

test  测试

package 打包(并将jar包放入到target的目录中)

site 生成一个站点

clean 删除target目录

install 安装jar包到本地仓库中

自动创建目录的两种方式:

1.mvn archetype:generate 按照提示进行选择

2.mvn archetype:generate -DgroupId=组织名,公司网址的反写+项目名

-DartifactId=项目名-模块名

-Dversion=版本号

-Dpackage=代码所存在的包名

8.Project Object Model项目对象模型

①Maven将一个Java工程的相关信息封装后得到的对象。简称POM。

②POM配置集中体现在pom.xml文件中,作为一个Maven工程,pom.xml是最核心的配置文件,作用相当于动态Web工程的web.xml。

9.约定的目录结构

①Maven之所以能够实现自动化构建,其中一个很重要的原因是要求将特定的文件保存在指定的目录中。

Hello [工程根目录]

--src [存放源代码文件]

-----main [存放主程序目录]

---------java [存放.java源文件]

---------resources [资源文件或配置文件]

-----test [存放测试程序目录]

---------java [存放.java源文件]

---------resources [资源文件或配置文件]

--pom.xml 核心配置文件]

②思想:Convention Over Configuration 约定优于配置

10.maven的几个概念:

1.坐标

①数学坐标:平面中使用横纵两个坐标系可以唯一的定位平面中的任何一个点。

向量x:横坐标     向量y:纵坐标

②使用三个向量在Maven仓库中唯一的定位一个Maven工程。

向量groupid:公司或组织的名称+项目名称     向量artifactId:模块名称     向量version:模块版本

<groupId>com.neuedu.maven</groupId>

<artifactId>Hello</artifactId>

<version>0.0.1-SNAPSHOT</version>

③如何根据坐标zhao到仓库中查找对应的Maven工程

坐标

<groupId>org.springframework</groupId>

<artifactId>spring-core</artifactId>

<version>4.0.0.RELEASE</version>

仓库中的路径

org/springframework/spring-core/4.0.0.RELEASE/spring-core-4.0.0.RELEASE.jar

④如何查找指定jar包的坐标:

1.从maven仓库下载

http://search.maven.org/

http://mvnrepository.com/【建议使用这个】

170911-关于maven的知识点的更多相关文章

  1. maven学习知识点汇总

    1. 2.maven自动建立目录骨架 首先进入目录结构:  PS C:\WINDOWS\system32> cd C:\Users\10563\Desktop\test 然后输入自动构建命令:  ...

  2. Maven 常见知识点整理

    认识 Maven Maven 的作用? 1.添加第三方jar包 2.解决jar包之间的依赖关系 3.获取第三方jar包 4.将项目拆成多个工程模块 Maven 是什么? 是Apache软件基金会组织维 ...

  3. maven小知识点

    Maven 使用惯例优于配置的原则 .它要求在没有定制之前,所有的项目都有如下的结构: 一个 maven 项目在默认情况下会产生 JAR 文件,另外 ,编译后 的 classes 会放在 basedi ...

  4. Maven 相关知识点解释

    在PC端上面关于Maven的安装等情况我这里就不再复述了,不懂的请自行百度谷歌. 今天聊一下Maven 里面的结构,及相关依赖解释. groupId,artfactId,version,type,cl ...

  5. eclipse下创建maven项目并部署到tomcat服务器(转)

    maven项目部署到服务器有很多方法,可以利用jetty-maven-plugin或者tomcat-maven-plugin,这属于maven的知识点. 通常开发中,需要将项目放在服务器上借助开发工具 ...

  6. maven学习笔记(超详细总结)

    目录 项目管理利器--maven 第1章 maven概述 1-1 项目管理利器-maven简介 1.1.1 什么是maven 1.1.2 什么是依赖管理 1.1.3 传统项目的依赖管理 1.1.4 m ...

  7. java后台技术

    本文旨在梳理服务端开发技术栈,希望帮助后端开发同学更全面了解Java服务端主要涉及的知识点 1. 语言相关 1.1 Java 核心知识点 Java的类加载机制 JVM相关:JVM内存模型和结构,GC原 ...

  8. 彻底透析SpringBoot jar可执行原理

    ​ 文章篇幅较长,但是包含了SpringBoot 可执行jar包从头到尾的原理,请读者耐心观看.同时文章是基于SpringBoot-2.1.3进行分析.涉及的知识点主要包括Maven的生命周期以及自定 ...

  9. 面试官:SpringBoot jar 可执行原理,知道吗?

    文章篇幅较长,但是包含了SpringBoot 可执行jar包从头到尾的原理,请读者耐心观看.同时文章是基于 SpringBoot-2.1.3进行分析.涉及的知识点主要包括Maven的生命周期以及自定义 ...

随机推荐

  1. 【Python基础】_1 Python简介

    1 Python简介 Python是一种计算机程序设计语言.是一种面向对象的动态类型语言,最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越来越多被用于独立的.大型项 ...

  2. uwsgi + nginx 部署python项目(二)

    实现负载均衡 开启两个服务器,nginx负责分发请求到两个服务器,以减轻单个服务器负担. 配置uwsgi服务器 在a项目目录下生成uwsgi.ini文件,在b项目目录下生成uwsgi.ini文件,如何 ...

  3. Vim常用的功能命令

    一.编辑 查看行号     :set nu 删除一整行   dd 删除1到10行     :1,10d 删除所有内容     dG 当前行下插入一空行   o 撤销改动    u 查看当前行信息    ...

  4. vue使用笔记二

    es6\es2015特性http://lib.csdn.net/article/reactnative/58021?knId=1405 使用express-generator初始化你的项目目录http ...

  5. Java 5种单例模式

    /*单例模式: 指某个类中只能存在一个对象实例,并且该类中只提供一个取得其对象实例的方法 优点:减少系统性能开销 应用场景:网站的计数器,任务管理器,回收站等*/   //单例模式1 -- 静态内部类 ...

  6. java基础笔记)(5)

    xml文件:树形存储格式:通过相同的xml文件实现不同的软件.不同的操作系统.不同的平台之间的信息通讯: 声明xml文件: <?xml version="1.0" encod ...

  7. 概率与期望dp相关

    概率与期望dp 概率 某个事件A发生的可能性的大小,称之为事件A的概率,记作P(A). 假设某事的所有可能结果有n种,每种结果都是等概率,事件A涵盖其中的m种,那么P(A)=m/n. 例如投掷一枚骰子 ...

  8. PHP 如何实现页面静态化

    页面静态化分为两种 一种伪静态,即url重写,一种纯静态化. 一.静态化的优点: 1有利于搜索引擎收录网站页面的信息:搜索引擎更喜欢静态的,更变于抓取,搜索引擎SEO排名会更容易提高. 2静态网页化网 ...

  9. html常用标签、包含关系、常用术语,以及网页设计中的字体分类

    编程比较舒适的等宽字体:DejaVu Sans Mono 字体的分类: serif (衬线字体){在笔画上面有些特殊的修饰效果} sans-serif (非衬线字体){横平竖直.横就是横,点就是点} ...

  10. Codeforces 934 最长不递减子序列 多项式系数推导

    A B C 给你一个长度为N的01串 你可以翻转一次任意[L,R]的区间 问你最长的不递减序列为多少长 处理出1的前缀和 和2的后缀和 然后N^2 DP 处理出 [L,R]区间的最长不递增序列 #in ...