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一致,依赖与本地绑定(依赖本地磁盘路径下的包)

如:
<dependency>
       <groupId>com.sinoair.hlink</groupId>
       <artifactId>wms-facade</artifactId>
       <version>1.0.0-SNAPSHOT</version>
       <scope>system</scope>
       <systemPath>${java.home}/lib/rt.jar</systemPath> 
<dependency>

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

传递性依赖

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

排除依赖

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

如:

<dependency>
	<groupId>com.sinoair.hlink</groupId>
	<artifactId>B</artifactId>
	<version>1.0.0</version>
	<!—剔除不稳定版本的依赖-->
	<exclusions>
		<exclusion>
	             <groupId> com.sinoair.hlink </groupId>
		     <artifactId>C</artifactId>
		     <version>1.0.0-SNAPSHOT </version>
                </exclusion>
        </exclusions> 
</dependency>
<!—自定义对稳定版本的依赖-->
<dependency>
	<groupId>com.sinoair.hlink</groupId>
	<artifactId>C</artifactId>
	<version>1.0.0</version>
</dependency>

归类依赖

<!—统一定义版本信息然后引用-->
<properties>
	<junit.version>4.12</junit.version>
<properties>
<dependencies>
	<dependency>
		<groupId>junit</groupId>
		<artifactId>junit</artifactId>
		<version>${junit.version}</version>	
		<scope>test</scope>
	</dependency>
<dependencies>

依赖查看

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


























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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值