maven

1.什么是maven:

中文意思为“知识的积累”,是Apache基金会出产的一个进行项目构建的工具,其核心是pom.xml(pom=Project Object model 项目对象模型),定义了项目的基本信息,用于描述项目如何构建,声明项目依赖等。

简而言之:

Maven是Java平台下的一款项目构建和依赖管理(统一管理jar包)的自动化管理工具。

友情提示:

项目构建:将我们的源代码、配置文件变成可执行的war包或者jar包。
依赖管理(统一管理jar包):项目需要正常运行,必须依赖一些第三方的jar包,对于这些第三方的jar包的管理,可以认为就是依赖的管理。

2.maven的特点:

2.1 原来的项目中需要的jar包必须手动“复制”、”粘贴” 到WEB-INF/lib 项目下,而借助Maven,可以将jar包仅

 仅保存在“仓库”中,有需要使用的工程只需要“引用”这个文件,并不需要重复复制到工程中。

2.2 原来的项目中所需要的jar包都是提前下载好的,而Maven在联网状态下会自动下载所需要的jar包。首先在本地

 仓库中找,找不到就在网上进行下载。

2.3 原来的项目中一个jar包所依赖的其他jar包必须手动导进来,而Maven会自动将被依赖的jar包导进来。

2.4 原来的项目一个项目就是一个工程,而借助Maven可以将一个项目拆分成多个工程。

3.关于maven

3.1 maven坐标三要素:Group id、Artifact id、Version
						  Group Id:意思为公司名或者组织名
                                      com.baidu.bj    org.apache.uk
                                      例子:pro.yf.bj
                                      
                           Artifact Id:项目的名字
                                       例子:Mavne_HelloWorld
                        
                           Version:版本号,SNAPSHOT意为快照,说明该项目还在开发中,是不稳定的版本
                    
             友情提示:上面的这三个因素构成了一个项目的基本信息(坐标),这是很重要的
                           
                           Package:项目中源代码存放的包的路径
3.2 maven的三套生命周期:clean、default(build)、site

3.2.1 Clean :
在进行真正的构建之前进行一些清理工作。 简称 “清理”,且包含三个phase(阶段)。

				                        1)pre-clean:执行清理前需要完成的工作
										2)clean:清理上一次构建生成的文件
										3)post-clean:执行清理后需要完成的工作

3.2.2 Default :
定义了真正构建时所需要执行的所有步骤:,编译,测试,打包,部署等等。 简称"构建项目",且包含以下几个重要的阶段

										1)validate:验证工程是否正确,所有需要的资源是否可用。
										2)compile:编译项目的源代码。  
									    3)test:使用合适的单元测试框架来测试已编译的源代码。这些测试不需要已打包和布署。
										4)Package:把已编译的代码打包成可发布的格式,比如jar。
										5)integration-test:如有需要,将包处理和发布到一个能够进行集成测试的环境。
									    6)verify:运行所有检查,验证包是否有效且达到质量标准。
										7)install:把包安装到maven本地仓库,可以被其他工程作为依赖来使用。
										8)Deploy:在集成或者发布环境下执行,将最终版本的包拷贝到远程的repository,使得其他的开发者或者工程可以共享。

3.2.3 Site :
生成项目报告建立和发布项目站点,且包含以下几个重要的阶段

										1)pre-site:生成项目站点之前需要完成的工作
										2)site:生成项目站点文档
										3)post-site:生成项目站点之后需要完成的工作
										4)site-deploy:将项目站点发布到服务器
3.3 maven创建项目

eclipse中创建maven项目
eclipse中创建maven项目

3.4 第一个maven项目

第一个maven项目

3.5 maven项目的目录结构

maven项目的目录结构

4.pom.xml

4.1 什么是pom:
              pom作为项目对象模型。通过xml表示maven项目,使用pom.xml来实现。主要描述了项目:包括配
                      置文件;开发者需要遵循的规则,缺陷管理系统,组织和licenses,项目的url,项目的依赖性,
                      以及其他所有的项目相关因素  
            
                简而言之:就是项目的配置清单
4.2 基本样子
           <dependencies> 
	
		      <parent>
		
		      <dependencyManagement>
		
		      <modules>
		
		      <properties>
		
		     <build>
		
		     <plugin>
	
	     <pluginManagement>
4.3 基本节点的含义:
  modelVersion

指定了当前Maven模型的版本号,对于Maven2和Maven3来说,它只能是4.0.0

      groupId:项目或者组织的唯一标志,并且配置时生成路径也是由此生成,如org.myproject.mojo生成的相对路径为:/org/myproject/mojo

	artifactId:项目的通用名称

	version:项目的版本

	packaging:打包机制,如pom,jar(默认的),maven-plugin,ejb,war,ear,rar,par

    name:项目的名称
            
    url:项目开发团队的网址,无关紧要,可以省略
        
    description:项目描述
4.4 dependencies和dependency的讲解:

友情提示:前者包含后者。前面说了,Maven的一个重要作用就是统一管理jar包,为了一个项目可以build或运行,项目中不可避免的,会依赖很多其他的jar包,在Maven中,这些依赖就被称为dependency

4.4.1 举个例子

比方说我的项目中用到了MyBatis,那么可以这么配置:我们可以去https://mvnrepository.com/这个网站去直接下载

org.mybatis mybatis 3.2.5
4.4.2 dependcy:

表示出依赖关系,即一个dependcy就是一种jar包里面的属性值得意思:

				type:默认为jar类型,常用的类型有:jar,ejb-client,test-jar...,可设置plugins中的extensions值为true后在增加 新的类型,
				scope:是用来指定当前包的依赖范围,maven的依赖范围常有以下四种值:
				compile(编译范围)
				provided(已提供范围)
				runtime(运行时范围)
				test(测试范围)
				system(系统范围)
				optional:设置指依赖是否可选,默认为false,即子项目默认都继承,为true,则子项目必需显示的引入,与dependencyManagement里定义的依赖类似 。
				exclusions:如果X需要A,A包含B依赖,那么X可以声明不要B依赖,只要在exclusions中声明exclusion.
				exclusion:是将B从依赖树中删除,如上配置,alibaba.apollo.webx不想使用com.alibaba.external  ,但是alibaba.apollo.webx是集成了com.alibaba.external,r所以就需要排除掉.
                version;版本号
                systempath:当scope的值为system时,提供相应的路径
	                                    
		 简而言之:
		                           
			      内部包含若干<dependency>
			            {    
			            groupId, artifactId,version 三个基本属性    /*1.这三个是最常用的,2只要有这三个就能基本上能用了*/
			            type :默认jar类型
			            scope: 当前包依赖类型
			            optional: false时, 继承这个项目所有的子项目。 true时, 该项目的子项目需要显式引入
			            exclusion :排除某项
			             }
4.4.3 利用maven的时候产生jar冲突:

maven的exclusion解决版本问题:用maven管理库依赖,有个好处就是连同库的依赖的全部jar文件一起下载,免去手工添加的麻烦,但同时也带来了同一个jar会被下载了不同版本的问题,好在pom的配置里面允许用来排除一些不需要同时下载的依赖jar

可以参考如图:maven的exclusion解决jar冲突.png
maven的exclusion解决jar冲突

5.pom.xml中不太常用的节点
5.1 dependencyManagement:
          通常在最顶层父pom中(在使用maven的继承特性的使用会用到),让所有在子项目中引用一个依赖而不用显式地列出版本号。
5.2 modules:
         将项目分块,达到高内聚,低耦合的目的(本身功能很强大,不用再引入其他类)
5.3 properties:声明一些常量:设置编码集,设置某一系列类型的框架的版本
  如:
   <file.encoding>UTF-8<file.encoding>    
  <spring.version>3.2.3.RELEASE</spring.version>
   引用时 :  ${file.encoding}                 ${spring.version}       
   也可以通过project.xx引用项目的定义的属性,例如: ${project.groupId} 引用当前pom定义的groupId        
5.4 build:构建项目需要的信息
  defaultGoal  默认目标
  directory   制定buildtarget目标下的目录
5.5 plugin:

声明项目中所使用的插件

5.6 pluginManagement:

作用类似于dependencyManagement, 定义子项目中的插件。 这样在子项目中使用插件时,可以不用指定其版本,由父项目统一进行管理。

5.7 parent:父项目的坐标。

如果项目中没有规定某个元素的值,那么父项目中的对应值即为项目的默认值。 坐标包括group ID,artifact ID和 version。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值