170911-关于maven的知识点
简介: 什么是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的知识点的更多相关文章
- maven学习知识点汇总
1. 2.maven自动建立目录骨架 首先进入目录结构: PS C:\WINDOWS\system32> cd C:\Users\10563\Desktop\test 然后输入自动构建命令: ...
- Maven 常见知识点整理
认识 Maven Maven 的作用? 1.添加第三方jar包 2.解决jar包之间的依赖关系 3.获取第三方jar包 4.将项目拆成多个工程模块 Maven 是什么? 是Apache软件基金会组织维 ...
- maven小知识点
Maven 使用惯例优于配置的原则 .它要求在没有定制之前,所有的项目都有如下的结构: 一个 maven 项目在默认情况下会产生 JAR 文件,另外 ,编译后 的 classes 会放在 basedi ...
- Maven 相关知识点解释
在PC端上面关于Maven的安装等情况我这里就不再复述了,不懂的请自行百度谷歌. 今天聊一下Maven 里面的结构,及相关依赖解释. groupId,artfactId,version,type,cl ...
- eclipse下创建maven项目并部署到tomcat服务器(转)
maven项目部署到服务器有很多方法,可以利用jetty-maven-plugin或者tomcat-maven-plugin,这属于maven的知识点. 通常开发中,需要将项目放在服务器上借助开发工具 ...
- maven学习笔记(超详细总结)
目录 项目管理利器--maven 第1章 maven概述 1-1 项目管理利器-maven简介 1.1.1 什么是maven 1.1.2 什么是依赖管理 1.1.3 传统项目的依赖管理 1.1.4 m ...
- java后台技术
本文旨在梳理服务端开发技术栈,希望帮助后端开发同学更全面了解Java服务端主要涉及的知识点 1. 语言相关 1.1 Java 核心知识点 Java的类加载机制 JVM相关:JVM内存模型和结构,GC原 ...
- 彻底透析SpringBoot jar可执行原理
文章篇幅较长,但是包含了SpringBoot 可执行jar包从头到尾的原理,请读者耐心观看.同时文章是基于SpringBoot-2.1.3进行分析.涉及的知识点主要包括Maven的生命周期以及自定 ...
- 面试官:SpringBoot jar 可执行原理,知道吗?
文章篇幅较长,但是包含了SpringBoot 可执行jar包从头到尾的原理,请读者耐心观看.同时文章是基于 SpringBoot-2.1.3进行分析.涉及的知识点主要包括Maven的生命周期以及自定义 ...
随机推荐
- nginx重新编译安装upload模块
由于php处理上传会出现超时,并且显示上传进度官方php不支持nginx+php,所以决定让nginx自己处理上传,我本地环境是mac上已经安装过nginx1.8.0,安装方式为brew,所以需要重新 ...
- 1、Java语言概述与开发环境——编译和运行第一个程序HelloWorld.java
编写一个Java程序到运行的步骤概述: 1.将Java代码编写到扩展名为.Java的文件中 2.通过Javac命令对该Java文件进行编译 3.通过Java命令对生成的class文件进行运行 一.编写 ...
- PyCharm中运行同一个python程序时选择平行窗口运行
问题描述 当我们进行Socket编程时,客户端可能有多个,原则上如果有n个客户端,那么我们就要编辑n客户端的代码.然而其实我们每个客户端的代码都是相同,如果编辑n遍,将会相当的浪费空间. 解决办法 学 ...
- oracle数据库启动报错,不能启动ASM实例
数据库rac启动时报错,日志例如以下,后来使用 Sat Jun 7 06:02:11 2014 GATHER_STATS_JOB encountered errors. Check the tra ...
- HeidiSQL
相关链接 https://www.heidisql.com/ - 官网 https://github.com/HeidiSQL/HeidiSQL - 源码 参考 ...
- MFC- socket 编程
一.CAsyncSocket类 CAsyncSocket属于异步非阻塞类. CAsyncSocket类采用了windows socket中的WSAAsyncSelect模型.CAsyncSocket ...
- Python RSA操作
公钥加密.私钥解密 # -*- coding: utf-8 -*- import rsa # rsa加密 def rsaEncrypt(str): # 生成公钥.私钥 (pubkey, privkey ...
- 对Xcode菜单选项的详细探索(来自董铂然的微博http://www.cnblogs.com/dsxniubility/p/4983614.html)
本文调研Xcode的版本是 7.1,基本是探索了菜单的每一个按钮.虽然从xcode4一直用到了xcode7,但是一般都只是用了一些基础的功能,说来也惭愧.在一次偶然的机遇突然发现了“显示调用层级”的选 ...
- c++ Socket客户端和服务端示例版本一
客户端 #include <stdio.h> #include <stdlib.h> #include <errno.h> #include <sys/soc ...
- Spring基础13——Spring表达式语言:SpEL
1.SpEL简介 Spring表达式语言(简称SpEL):是一个支持运行时查询和操作对象图的强大的表达式语言.语法上类似于EL:SpEL使用#{...}作为界定符,所有在大框号中的字符都将被认为是Sp ...