maven笔记1--安装及使用

简介:

构建:编译,运行单元测试,生成文档,打包,部署

优点:作为构建工具,可以帮助我们自动化构建,抽象构建过程,提供构建任务实现;跨平台,对外提供一致的操作接口。

Maven 不仅仅是构建工具,还是一个依赖管理工具和项目信息管理工具。提供了中央库,帮助我们自动下载构件。

Maven安装

  1. 需要先安装JDK环境
  2. 下载解压缩Maven压缩包
  3. 配置Maven环境变量 (windows下cmd命令会先在当前目录寻找可执行脚本,没有就会去path定义的路径下找)
  4. 检查环境变量 echo %MAVEN_HOME%  ,查看maven版本  mvn -version
Eclipse重要组件:插件地址 http://m2eclipse.sonatype.org/sites/m2e-extras
  • Maven SCM handler for Subclipse(Optional):帮助从SVN服务器签出Maven项目,需要先集成SVN
  • Maven SCM Integration(Optional):Maven与SCM集成,利用各种SCM工具(如SVN)实现Maven项目的签出和具体化等操作
  • Project configurators for commonly used maven plugins(temporary):临时组件,支持一些Maven插件与Eclipse的集成

 常用指令

mvn clean         清空target目录
mvn compile     编译项目,生成class文件
mvn package    打包生成jar文件等
mvn install        将生成的jar文件安装到本地仓库,这样其他项目就可以依赖使用了
mvn deploy       将jar包发布到私服仓库,供其他人下载使用

install -DskipTests=true  跳过测试

Maven可配置多套环境(develop,test,stage)开发环境,测试环境,生产环境
mvn -Ptest  以test的配置打包
mvn version:set -DnewVersion=2.0.0 -DgenerateBackupPoms=false  统一修改pom文件中的版本信息

目录

  • bin:包含mvn运行的脚本
  • boot:只包含一个plexus-classworlds-***.jar,是一个类加载器框架,比java默认的类加载器提供了更丰富的语法以方便配置。Maven使用该框架加载自己的类库
  • conf:settings.xml全局定制Maven的行为,建议将该文件复制到~/.m2/目录下,在用户范围定义maven行为
  • lib:包含maven运行时需要的java类库

Maven基本概念

坐标体系

  • groupId:定义当前Maven项目隶属的实际项目(一个实际项目下可能对应多个maven项目,如:spring项目下有spring-core,spring-web等),groupId不应该对应项目隶属的组织或公司,因为组织下会有多个项目,artifactId只能定义Maven项目模块,可能会导致实际项目这一层很难定义。如:com.sinoair.hlink.wms
  • artifactId:定义实际项目中的一个Maven项目模块,通常使用实际项目名作为前缀,如:wms-facade,wms-frontweb
  • version:定义maven项目当前所处的版本
  • classifier:定义构建输出的附属构件,如Java文档和源码。不能直接定义

依赖配置

  • groupId,artifactId,version:依赖的基本坐标
  • type:依赖的类型,对应坐标定义的packaging。默认为jar
  • scope:依赖范围,控制编译环境变量classpath,测试classpath,运行classpath的关系
    • compile:编译依赖范围。默认值,对编译,测试,运行都有效
    • test:测试依赖范围。只对测试有效,在编译主代码和运行项目时无法使用,如 junit.jar 包
    • provided:已提供范围。对编译和测试有效,运行时无效,如 servlet-api.jar
    • runtime:运行时范围。测试和运行有效,编译时无效,如jdbc驱动包
    • system:系统范围。与provided一致,依赖与本地绑定(依赖本地磁盘路径下的包)

如:
       com.sinoair.hlink
       wms-facade
       1.0.0-SNAPSHOT
       system
       ${java.home}/lib/rt.jar 

  • optional:依赖是否可选
  • exclusions:排除传递性依赖

传递性依赖

A依赖B,B依赖C,则A就自然依赖C

排除依赖

如上A>B>C的例子,假如C是snapshot版本,这时我们就可以排除B对C的依赖,然后自己再配置一个对C稳定版本的依赖

如:


	com.sinoair.hlink
	B
	1.0.0
	
	
		
	              com.sinoair.hlink 
		     C
		     1.0.0-SNAPSHOT 
                
         



	com.sinoair.hlink
	C
	1.0.0

归类依赖



	4.12


	
		junit
		junit
		${junit.version}	
		test
	


依赖查看

Maven会自动解析所有项目的直接依赖和传递性依赖,并且根据规则正确判断每个依赖的范围,对于一些依赖冲突,也能进行调节。最后得到的依赖叫做 已解析依赖
mvn  dependency:list      查看当前项目的已解析依赖
pom中配置的依赖为顶层依赖,顶层依赖的依赖叫做第二层依赖,一次类推第三,第四层依赖,这就形成一个依赖树
mvn  dependency:tree    查看依赖树
mvn  dependency:analyze    分析依赖,找出一些用到但没显示声明的依赖和显示声明但没用到的依赖


























你可能感兴趣的:(maven,坐标,依赖,读书笔记,maven)