开发工具之Maven学习笔记

maven是基于项目对象模型(POM),可以通过一小段描述信息来管理项目的构建、报告和文档的软件项目管理工具。

mvn安装目录下各个目录的功能
--bin	目录是包含了mvn运行的脚本
--boot	包含了类加载器框架,maven使用该类加载器加载自己的类库
--config包含一些配置文件
--lib	包含maven运行时所用到的类库文件
配置maven环境变量

创建目录
目录结构
src
	-main
		-java
			-package
	-test
		-java
			-package
	resources
mvn常用命令
mvn -v是查看maven版本号
mvn compile编译
mvn test运行测试用例
mvn clean删除target文件夹
mvn install安装jar包到本地仓库
maven自动生成模板
mvn archetype:generate

根据提示填写相应信息即可,或者使用如下语句直接创建

mvn archetype:generate -DgroupId=公司网址反写+项目名
	-DartifactId=项目名-模块名
	-Dversion=版本号
	-Dpackage=代码所在包名
Maven坐标和构件

groupId+artifact+版本号构成了maven的坐标
建议:在创建项目时,groupId应该和包名相一致

仓库

用来管理项目依赖
分为:

  • 本地仓库
  • 远程仓库
镜像仓库

修改镜像仓库:
在maven安装目录下找到conf目录下的setting.xml
修改其中的<mirror>标签,修改该仓库下的url即可
如常用的阿里云的镜像,可以修改为:

<mirror>
  <id>alimaven</id>
  <name>aliyun maven</name>
  <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
  <mirrorOf>central</mirrorOf>       
</mirror>
更改仓库默认路径

依然是修改conf目录下的setting.xml文件中的标签,如修改为:
E:/maven_repo/repo

Eclipse中设置maven
Window-->Preferences-->Maven-->User Settings-->设置Globle Settings找到maven安装目录下的setting.xml文件即可
Maven项目的生命周期

完整项目构建过程:

清理-->编译-->测试-->打包-->集成测试-->验证-->部署
常用命令
   clean	清理项目
    	pre-clean:执行清理前的工作
    	clean:清理上一次构建生成的所有文件
    	post-clean:执行清理后的文件
   default	构建项目(最核心)
    	常用:compile(编译),test(测试),package(打包),install(安装)
   site	生成项目站点
    	用来生成项目站点
    	pre-site:生成项目站点前要完成的工作
    	site:生成项目站点文档
    	post-site:在生成项目站点后要完成的工作
    	site-deploy:发布生成的站点到服务器上

对于生命阶段而言,执行后面的阶段,前面的阶段会依次顺序执行
POM常用元素

<modelVersion>4.0.0</modelVersion>	指定了当前pom的版本
<groupId>一般与包名相同:反写公司网址+项目名</groupId>	主项目标识
<artifactId>项目名+模块名</artifactId>	模块标识
<version>0.0.1-SNAPSHOT</version>当前项目版本号,第一个数字表示大版本号,第二个数字表示分支版本号,第三个数字表示小版本号
snapshot为快照版,alpha内测版本,beta公测版本,release稳定版本,GA正式版本
<packaging>jar</packaging>打包方式 除jar之外还有war,zip,pom
<name>hi</name>描述标签,在产生项目文档时使用
<url>http://maven.apache.org</url>项目的地址以
<description></description>项目的描述 
<developers></developers>开发人员列表
<licenses></licenses>许可证信息
<organization></organization>组织信息

<dependencies></dependencies>依赖列表
<dependency></dependency> 依赖项
<groupId></groupId>依赖项的项目名
<artifactId></artifactId>依赖项的模块名
<version></version>依赖项的版本号
<scope></scope>依赖项的作用范围
<type></type>依赖项的类别
<optional></optional>设置依赖是否可选,默认为false,默认情况下,子项目继承该依赖,否则为true的情况下必须显式依赖该项目
<exclusions></exclusions>排除依赖传递列表
    <exclusion></exclusion>排除的依赖项

<dependencyManagement></dependencyManagement>依赖管理,可以在其中定义依赖列表,但是不会将依赖的包引入。主要用于在父模块中供子模块继承使用
<build></build>为构建提供相应的支持
<plugins></plugins>插件列表
<plugin></plugin>具体的插件,plugin也需要指出标签

<parent></parent>通常用于在子模块中对父模块的继承
<modules></modules>用来聚合模块
依赖的范围

用来控制依赖与三种classpath之间的关系

编译,测试和运行三个阶段,根据三种阶段分为了以下几种

compile:默认级别,对于编译测试运行都有效
provided:编译和测试时有效,运行时候不会被加入,如servlet
runtime:测试和运行时有效,如jdbc驱动
test:只在测试时有效,如junit
system:和provided一样是只可以在编译和测试有效,但是对系统有较强的依赖,可移植性差
import:导入的依赖范围,只使用在dependencyManagement中,表示从其他的pom引入dependency配置
依赖的传递

A依赖B,B依赖C,则A依赖C

排除依赖:使用exclusions标签,包含exclusion标签,其中包含坐标

在settings.xml中指定jdk的版本

依赖冲突
当A和B依赖不同版本时候
规则:短路优先
如A依赖B,B依赖C,C依赖X.jar
A依赖D,D依赖X.jar
会优先选用路径最短的,即A会依赖D包含的X.jar的版本

当路径长度相同时
规则:顺序优先

聚合和继承
聚合:

使用包含其中包含坐标

继承:

父依赖可以传递给子依赖
使用parent标签,包含父POM的坐标即可将父POM的引入

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值