maven

Maven: 内行,专家
maven是项目管理方面的专家,专门用于在开发阶段进行项目管理.
作用:
一键构建项目:
一个命令可以实现对项目指定的管理.
一个命令调用一个插件,插件代码的执行就可以实现指定功能.
jar包依赖管理:
在我们的电脑上,经常会编写多个web项目,而多个web项目中都需要导入相同的jar包,
对于计算机而言,这些jar包是重复是冗余,maven将所有的jar包进行了统一的管理.
将jar包存放在maven仓库(jar包仓库),当我们的项目需要使用jar包时,直接在项目的pom.xml文件中导入jar包坐标即可.

安装maven软件:
maven这个软件是使用java语言开发的,所以安装maven前要保证电脑上有java的环境.
解压缩安装即可
配置Maven的环境变量
在dos窗口中查看maven的安装情况: mvn -v
maven仓库(jar包仓库):
概念: 在计算机上本质上就是一个存放jar包的文件夹.
分类:
本地仓库: 安装在你自己电脑上的仓库,只服务于你自己
远程仓库(私服): 某些公司或组织搭建的maven仓库,服务于当前公司或组织的所有成员.
中央仓库: 最大的仓库,Apache组织提供的仓库,服务于所有的程序员
中央仓库的代理仓库
搭建本地仓库:
本地仓库默认存放在c盘
自定义仓库存放的位置,在maven的setting.xml文件中指定本地仓库的路径.
maven的一键构建:
mvn clean : 清理
mvn compile : 编译主要的资源
mvn test : 测试
mvn package : 打包
mvn install : 安装到本地仓库
mvn deploy : 安装到私服(远程仓库)
maven管理后的java和web项目:
web项目:
项目名称: 骨架
|-src : 存放项目使用的所有资源
|-main : 存放主要的资源
|-java : 存放主要的java类
|-resources : 存放主要的配置文件
|-webapp : 存放静态资源
|-test : 存放测试的资源(用于测试主要资源是否正常)
|-java : 存放测试的java类
|-resources : 存放测试时使用的配置文件
|-target : 项目资源编译后存放的目录
|-pom.xml : maven项目的核心配置文件
描述当前项目
当前项目依赖的jar包坐标
当前项目依赖的插件(tomcat插件,maven中最高支持到tomcat7)
java项目:
项目名称:
|-src : 存放项目使用的所有资源
|-main : 存放主要的资源
|-java : 存放主要的java类
|-resources : 存放主要的配置文件
|-test : 存放测试的资源(用于测试主要资源是否正常)
|-java : 存放测试的java类
|-resources : 存放测试时使用的配置文件
|-target : 项目资源编译后存放的目录
|-pom.xml : maven项目的核心配置文件
描述当前项目
当前项目依赖的jar包坐标
maven基础

第一章 maven概述

maven: 内行,专家
  	maven是项目管理方面的专家,专门用于在开发阶段进行项目管理.
作用:
		一键构建项目:
				插件: 实现了指定功能的代码片段.
				一个命令对应一个插件,一个插件可以实现一种功能,对项目管理.
        compile: 命令
        		可以将当前项目下所有的java类实现编译
		jar包依赖管理:
				maven将所有的jar包进行了统一管理,存放在maven的jar包仓库中.
        当我们的项目需要使用jar包时,直接同jar包坐标定位jar包在仓库中的位置即可.

1.1 maven简介

  • Maven,一个比较正式的定义,是Apache提供的一个项目管理工具,它包含了一个项目对象模型(POM:Project Object Model)、一组标准集合、一个项目生命周期、一个依赖管理系统、和用来运行在生命周期阶段中插件(plugin)目标(goal)的逻辑。
  • 用更通俗的方式来说,在程序开发过程中,除了写代码,还有很多其它必不可少的事情要做,比如:
      1. 引入jar包
        尤其是大型工程,往往需要引入几十上百个jar包。每个jar包都需要手动引入,并且要注意jar包之间的版本冲突问题
        jar包冲突:在一个项目中导入了功能相同,但版本不同的多个jar包,这多个jar包就可能导致jar包冲突
      1. 程序编译 javac
        写好的程序是Java文件,必须要编译成class文件才能运行。现在有各种集成工具例如idea可以帮我们完成
      1. 单元测试
        世界上不存在没有bug的程序,因此写完了程序有时候要写一些单元测试,然后一个个来运行检查代码的质量
      1. 开发好的程序代码,必须要打包把所有的程序代码、资源、配置文件等等整合到一起,还要发布到web应用服务器软件进行部署。这些工作很麻烦,使用Maven可以帮我们从这些繁琐的工作中解脱出来:maven帮我们构建项目、管理jar包、编译代码,还能帮我们运行单元测试、打包,甚至能帮我们部署项目

      为什么需要将项目打包:
      整个项目的源码只有程序员手中有.
      项目部署时,将项目的配置文件,java类编译后的class文件,静态资源等等打成一个包,将打好的包交个运维,进行运行维护
      项目打包:
      jar包: java项目打成的包叫做jar包
      META-INF:
      对当前jar包版本的描述及说明
      class文件:
      包中存放的是java类编译后的class文件
      war包: web项目打成的包叫做war包
      META-INF: 存放当前包的描述信息
      WEB-INF:
      classes: 存放web项目中java类编译后的class文件
      lib: 存放当前项目需要依赖的jar包
      web.xml: web项目的核心配置文件
      index.html
      静态资源
      项目部署时,直接将war包存放到webapps目录下即可

jar包和war包中没有java类,只有java类编译后的class文件,部署项目时,只需要部署war包即可.

1.2 作用:

jar包的依赖管理:

可以统一管理jar包

  • 使用Maven之前,要使用某个jar包,我们需要去下载、拷贝到项目里、添加依赖即可。
  • 使用Maven之后,只需要给Maven配置jar包的坐标到pom.xml,Maven会自动帮我们去加载jar包

一键构建项目

  • 什么是构建:从无到有,从有到上线运行的整个过程就叫做 ---- 构建
    • 指web项目从编译、测试、运行、打包、安装、部署 整个过程,叫构建.
      mvn compile —> 插件(java代码) ----> 插件执行完成编译
  • maven可以使用一个命令帮我们完成项目的构建
    当我们调用maven的命令时,每一个命令都会找一个插件,插件中代码的执行就可以实现指定的功能了
    插件: 实现了指定功能的代码片段
  • 构建流程参考图解

第二章 Maven的安装与maven仓库配置

2.1 下载

  • 下载
    • http://maven.apache.org/
    • 我们使用的是3.5.4版本,直接解压缩即可

2.2 maven安装与目录

  • Maven是免安装版的,直接解压即可
    注意:不要放在有空格和中文的路径里.
    解压后为了使用方便,我们要把Maven配置到环境变量中
  • 目录结构
    • bin:可执行命令文件夹
    • boot:类加载器(Maven是Java程序,要使用类加载器)
    • conf:配置文件 ★★★
    • lib:Maven的核心程序

2.3 配置maven环境变量

注意: maven的运行需要JDK做支持,所有电脑上必须配置了JDK的环境变量
-------------------------------------------------------
1.配置maven的环境变量
    变量名称: MAVEN_HOME
    变量值: maven安装的目录,可以点"浏览目录"选择安装位置
2.将maven的环境变量加入到系统环境变量中
	在最前面添加: %MAVEN_HOME%/bin;
3.检测配置是否正确
	在dos中输入: mvn -version

2.4 maven仓库

maven仓库: jar包集. 本质上指的是存放jar包的文件夹,在maven仓库中存放有各种我们需要使用到的jar包.

仓库分类

  1. 本地仓库 : 服务于你自己
    用来存储从远程仓库/中央仓库下载的jar包。Maven项目要使用jar包的话,优先从本地仓库中查找。本地仓库的默认地址是: u s e r . d i r / . m 2 / r e p o s i t o r y 其 中 {user.dir}/.m2/repository 其中 user.dir/.m2/repository{user.dir}是Windows当前用户的目录
  2. 远程仓库(私服) : 服务于一个公司,组织,或集团
    如果Maven项目使用的jar包 在本地仓库中找不到,就会去远程仓库中查找并加载。远程仓库通常是由某些公司或者组织搭建提供的.
  3. 中央仓库 : 服务于所有的人
    是Maven软件内置的一个远程仓库,地址:https://repo.maven.apache.org/maven2/。它是中央仓库,服务于整个互联网,由Maven自己的团队维护,里边存储了非常全的jar包,包含了世界上绝大部分流行的开源项目构件。

maven项目加载jar包流程图

安装配置本地仓库

安装本地仓库

直接将压缩包解压缩即可
	注意: 不要安装在有中文和空格的路径下.

本地仓库配置

说明:
	本地仓库的默认地址是:${user.dir}/.m2/repository 
	maven默认去C盘找本地仓库,由于maven仓库存放的jar包比较多,所占空间比较大,我们一般不将仓库存放C盘
	当我们安装好maven仓库后,需要修改maven的配置文件,指定一下maven本地仓库的位置,这样以来maven就知道去哪个位置找jar包了.
------------------------------------------配置
修改settings.xml配置文件,在maven的conf目录下:
	settings.xml 
		53-55行: 添加
			你的maven仓库的路径
			D:\software\maven\repository

如果需要配置私服,要修改settings.xml文件

安装好maven软件后,在setting.xml文件中配置:
	1.本地仓库的路径
  2.配置jdk的版本
  3.配置阿里私服



	
	D:\software\java\maven\repository

  
  

  
  


  
  

 
  
	 
    
      central
      aliyun-central
      http://maven.aliyun.com/nexus/content/groups/public/
      central
    
  

 
  
	
	  
		jdk8  
		  
			true  
			1.8  
		  
		  
			1.8  
			1.8  
			1.8  
		   
	 
	
	
      downloadSources
      
        true
        true
      
    
    
      
        
          aliyun-central
          aliyun-central
          http://maven.aliyun.com/nexus/content/groups/public/
          true
          true
          default
        
      
    
  
	
  
    downloadSources
  



第三章 Maven项目的标准目录结构

回顾: web项目部署到服务器上的目录结构
	项目名称: ★★★
		|- 静态资源 //html  css  js  img ...
    |- WEB-INF //受保护的目录
        |- classes //存放项目中java类编译后的class文件
        |- lib // 存放项目需要的jar包
        |- web.xml //web项目的核心配置文件,servlet2.5之前必须要有,3.0后可有可无

以下这些目录结构,仅仅是maven项目在IDEA中显示的结构,最终部署到服务器上后,仍然会转成上面的结构
maven的web项目: ★★★★★
	项目名称(helloworld): 骨架(固定的目录结构)
		|-src: 存放当前项目的一切数据资源
			|-main: 存放当前项目的主要资源
				|-java: 存放当前项目的java类
				|-resources: 存放当前项目的配置文件
				|-webapp: 存放静态的资源(javaweb项目独有)
          		|-静态资源
          		|- WEB-INF: 
                  |-web.xml
			|-test: 存放当前项目的测试资源
				|-java: 存放测试的java类
				|-resources: 存放测试时需要的配置文件
		|-target: 动态生成的(不用管)
		|-pom.xml: maven的核心配置文件(引入jar包坐标)
						存放本项目的基本信息
            项目依赖的jar包信息
            项目依赖的插件信息
==========================================================
maven的java项目: ★★★★★
	项目名称: 
		|- src : 当前项目的一切资源信息
			|- main : 主要信息
				|- java : 当前项目的java类
				|- resources : 当前项目需要的配置文件
			|- test : 测试信息
				|- java : 存放测试类
				|- resources : 存放测试类需要用到的配置文件
		|- target : 当前项目中java类所编译后的文件
		|- pom.xml : 存放当前项目所需要依赖的jar包的坐标

java项目打成的包 ----->  jar包
	存放java项目编译后的class文件
web项目打成的包 ----->  war包
注意:
	无论是maven的java项目还是web项目在打包时,test目录中的信息都不会打入包中

第四章 Maven的常用命令(goal)

借助于maven的常用命令可以实现maven项目的一键构建, maven提供的每一个命令,就可以实现指定的一个功能.

声明: 这些命令大家可以不敲,但要明白什么意思. IDEA为我们提供了图形化界面方式操作命令.

4.1 常用命令:

在不借助IDEA的情况下运行一个web项目.

命令描述:
	我们可以在dos里,使用Maven的一系列命令,来对Maven项目进行编译、测试、运行、打包、部署。
	Maven命令的统一格式:  mvn 命令
	
mvn clean  //清理
	清除项目根目录下的target目录(之前编译的内容)

mvn compile // 编译
	将项目中src/main/java里的 *.java编译成 *.class
    
mvn test // 单元测试
    编译并执行根目录中src/test/java中的测试类。
    测试代码存在的目的就是为了测试核心代码是否正确,所有测试命令在执行时,一定会先将核心代码给编译
	要求:单元测试类名必须是XXXTest.java,否则不能执行
		只有类名称已Test结尾,那么类中的单元测试方法才能执行.

mvn package // 打包
	将项目打包,然后放在根目录的target目录下
	Java项目,打包成jar包
	web项目,打包成war包
	在打成的包中包含的是main/java包下,java类编译后的class文件
	
mvn install //安装
	把项目打好的包安装到本地仓库
	Java项目-->jar包
	web项目-->war包

mvn deploy //安装
	将项目打好的包安装私服(远程仓库)中
	
在外部使用maven中的tomcat插件启动maven项目:
    在dos命令中输入: mvn tomcat7:run 
        mvn tomcat:run (默认使用的是tomcat6)
        maven支持的tomcat最高版本为tomcat7
在pom.xml文件中配置tomcat7插件
		
			// 当前插件所属的团队或公司
			org.apache.tomcat.maven
			// 当前插件的名称
			tomcat7-maven-plugin
			// 版本号
			2.2
			
				// 配置端口号
				80
				// 配置当前项目名
				/helloworld
			
		
以上命令之所以会起作用,是因为每一个命令会调用一个插件,在插件中已经实现了具体的功能.

pom.xml解释


  com.itheima
  helloworld
  1.0-SNAPSHOT
  war


     
      javax.servlet 
      javax.servlet-api 
      3.1.0 
	  	provided 
    
 


	
    helloworld
    
    	
    		
                // 当前插件所属的团队或公司
                org.apache.tomcat.maven
                // 当前插件的名称
                tomcat7-maven-plugin
                // 版本号
                2.2
                
                    // 配置端口号
                    80
                    // 配置当前项目名
                    /helloworld
                
            
    	
    

4.2 maven生命周期(了解)

Maven有三套生命周期,三套生命周期之间互相独立的:

  • cleanLifeCycle:清理生命周期(清除target下的所有资料)
    • mvn clean
  • defaultLifeCycle:默认生命周期(构建生命周期)
    • compile, test, package, install, deploy
  • siteLifeCycle:站点生命周期
    • mvn site
      生成一些HTML文档,描述当前项目信息
  • 注意
    • 在一套生命周期内,执行后边命令,前边命令会自动执行

第五章 使用idea开发Maven项目

在idea中集成Maven的环境:

5.1 idea配置maven环境

-DarchetypeCatalog=internal

5.2 创建maven的java项目

// 1.创建maven项目 new maven
// 2.选择骨架 quickstart
// 3.设置项目基本信息 (公司域名倒置,项目名称,版本)
// 4.确认信息是否正确
// 5.确认项目名称

5.3 创建maven的web项目(重点)

// 1.创建maven项目 new maven
// 2.选择骨架  webapp
// 3.设置项目基本信息 (公司域名倒置,项目名称,版本)
// 4.确认信息是否正确
// 5.确认项目名称

添加webapp目录

5.4 添加jar包坐标

1. 在maven的pom.xml文件中,使用 alt+insert 快捷方式查找本地仓库中的jar包
	2019的IDEA无法使用,如果使用2019的IDEA直接复制上课使用的jar包坐标
  能够被搜索到的jar包,一定是idea构建索引后的.
2. 通过 https://mvnrepository.com 网站查询需要引入的jar包坐标
3. 直接将使用的jar包坐标复制到你的pom.xml文件中  ★★

5.5 部署项目的多种方式

编写好maven的web项目后, 我们可以使用maven自带的插件部署项目,
也可以使用原来的方式部署项目
两种方式都可以.


        
            
            
                org.apache.maven.plugins
                maven-surefire-plugin
                2.19
                
                    
                        org.apache.maven.surefire
                        surefire-junit4
                        2.19
                    
                
            

            
            
                org.apache.tomcat.maven
                tomcat7-maven-plugin
                2.2
                
                    utf-8
                    
                    80
                    
                    /
                
            

            
            
        
    

5.6 jar包依赖范围

jar包冲突: 在一个项目中引入了功能相同版本不同的多个jar包.

可以设置jar包的依赖范围

  • 描述:

    • 项目中的jar包如果很多,就可能出现jar包冲突。比如:web应用(tomcat)里有servlet-api的jar包,web在Tomcat里运行也有servlet-api的jar包,那么在Tomcat启动时,就可能出现jar包冲突的问题为了避免这种情况的发生,Maven为每个依赖提供了作用范围,即:依赖范围。
  • compile:
    默认的依赖范围,在编译、测试、运行时都有效—最终会出现在jar包/war包里

  • test:
    编译和单元测试有效,其它无效—最后生成的jar包/war包里没有这一类jar包

  • provided:★★★
    jar包在其它地方已经提供了,比如:jdk已经提供了,或者Tomcat/WebLogic/WebSphere里边提供了----编译以及测试有效,最终不会出现在war包/jar包里

  • runtime:
    编译无效,测试有效,运行有效。比如:数据库驱动包。

  • 查询maven坐标网站: http://mvnrepository.com/


    4.0.0

    com.itheima
    day12_04_web
    1.0-SNAPSHOT
    war
    
    
      UTF-8
      
      
    
    
    
      
        junit
        junit
        4.11
        
        provided
      
      
      
        javax.servlet
        jsp-api
        2.0
        provided
      
      
      
        javax.servlet
        javax.servlet-api
        3.1.0
        provided
      
    
    
    
    
    

第六章 概念模型(了解)

pom.xml: project object model,项目对象模型

jar包坐标

	
        
        
            javax.servlet
            javax.servlet-api
            3.1.0
            provided
        
        
        
            jstl
            jstl
            1.2
        
        
        
            mysql
            mysql-connector-java
            5.1.26
            compile
        
        
        
            commons-beanutils
            commons-beanutils
            1.9.2
            compile
        
        
        
            org.mybatis
            mybatis
            3.4.5
        
        
        
            log4j
            log4j
            1.2.17
        
    

总结

maven: 内行,专家
  	maven是项目管理方便的专家,可以管理项目的方方面面,
		将我们从繁琐的开发流程中解脱出来,让我们只关注程序代码.
  	maven的作用:
				一键构建项目:
						maven的一个命令可以调用对应的插件,在插件中完成对应的功能.
            构建项目: 从无到有,从有到部署上线的整个过程叫做构建.
				jar包的依赖管理:
						maven提供了jar包仓库,在jar包仓库中对需要使用到的jar包进行统一管理.
1.maven的下载与安装
		maven版本: 3.5.4版本
    安装:
				直接解压即可(不要安装在有中文和空格的目录下)
      	安装完毕后,配置maven的环境变量.
        注意: maven这个软件是使用java语言开发的,所有需要依赖java的环境变量
2.maven仓库
    仓库分类: 本地仓库 远程仓库(私服) 中央仓库
    本地仓库搭建:
				maven仓库本质上就是存放了jar包的文件夹.
        直接将准备好的jar包存放到一个文件夹中即可,这个文件夹称之为jar包仓库.
		在maven的setting.xml文件中,配置本地仓库的地址.
3.maven项目的目录结构
		maven的web项目: 
				项目名称:  骨架
					|-src: 存放项目的资源
            	|-main: 存放主要资源
                	|-java: 存放主要的java类
									|-resources: 存放主要的配置文件
									|-webapp: 存放静态资源
                    |-html css js img 
                    |-WEB-INF: 受保护的目录
                      	|-web.xml web项目的核心配置文件
							|-test: 存放测试资源(为了测试主要资源)
                	|-java: 存放测试的java类
									|-resources: 存放测试的配置文件
          |-target(不用管,动态生成,存放编译后的资源)
          |-pom.xml maven的核心配置文件
            	a.配置当前项目的信息
            	b.配置当前项目依赖的jar包坐标
            	c.配置当前项目依赖的插件
		maven的java项目:
          项目名称:  骨架
					|-src: 存放项目的资源
            	|-main: 存放主要资源
                	|-java: 存放主要的java类
									|-resources: 存放主要的配置文件
							|-test: 存放测试资源(为了测试主要资源)
                	|-java: 存放测试的java类
									|-resources: 存放测试的配置文件
          |-target(不用管,动态生成,存放编译后的资源)
          |-pom.xml maven的核心配置文件
            	a.配置当前项目的信息
            	b.配置当前项目依赖的jar包坐标
            	c.配置当前项目依赖的插件
4.一键构建项目---maven的常用命令(了解)
		生命周期:
				清理生命周期: 清理
          	mvn clean
				默认生命周期: 默认需要执行的
          	mvn compile : 编译主要的java类
            mvn test : 执行单元测试
            mvn package : 打包
            mvn install : 安装到本地仓库
            mvn deploy : 安装到私服中
				站点生命周期: 生成项目的描述网页
          	mvn site : 生成网页,对当前项目描述
5.在IDEA中使用maven ★★★
		idea中配置maven环境
  	创建maven的java项目,web项目
    部署maven的web项目:
      	tomcat8部署,和之前一样
        tomcat7插件部署:
						在项目的pom.xml文件中引入插件
6.jar包依赖管理
		在pom.xml文件中引入jar包的坐标
         alt+insert: 搜索本地仓库中的jar包
         复制jar包坐标
         查询: https://mvnrepository.com/
		在idea中,只要jar包坐标正确,会自动下载jar包到本地仓库
7.概念模型:
		pom.xml: project object model 
      	项目对象模型
    maven中的相关名词

125 

POM.xml文件

1.当前项目的相关描述信息
	com.itheima
    day11_04_web
    1.0-SNAPSHOT
	war
2.jar包依赖
	导入项目需要依赖的jar包坐标
	
        
            javax.servlet
            javax.servlet-api
            3.1.0
            provided
        
        
            junit
            junit
            4.12
            test
        
    
3.项目依赖的插件
	
		
            
            
                org.apache.maven.plugins
                maven-surefire-plugin
                2.19
                
                    
                        org.apache.maven.surefire
                        surefire-junit4
                        2.19
                    
                
            
            
            
                org.apache.tomcat.maven
                tomcat7-maven-plugin
                2.2
                
                    
                    80
                    
                    /
                
            
        
   

在maven的核心配置文件中配置jdk的版本

在maven的setting.xml文件中配置
        注意存放到profiles标签中
        ------------------------------
     	  
            jdk8  
              
                true  
                1.8  
              
              
                1.8  
                1.8  
                1.8  
               
         

你可能感兴趣的:(maven,java,jar)