Maven是基于项目对象模型(POM),可以通过一段描述信号来管理项目的构建、报告和文档的软件管理工具。现在有很多大型项目都是基于Maven管理的,例如中国的某宝就是用Maven进行管理的。在Eclip4.0以上和MyEclipse中都默认安装了Maven组件。
Maven下载安装很类似JDK和JRM的安装,在Maven.org上下载解压,配置环境变量,在cmd中输入mvn -v可以确定是否配置成功。
Maven的目录结构:
Src
-main
-java
-package
-test
-java
-package
-resources
Maven常用的构建命令:
mvn -v 版本、compile 编译、test 测试、package 打包、clean 清除、install 安装到本地仓库;
Maven的坐标和仓库:
坐标:在数学中可以通过一个二维坐标来确定一个点的位置,在Maven中也是同样的道理,只是用坐标来确定相关构件(Jar)的位置,方便用户进行下载和使用。在Maven的坐标三用个参数来确定groupId、artifactId、version;
groupId:定义项目隶属于哪个实际项目,一般就是公司的网站的反写+项目名;
artifactId:定义项目中的模块标识,项目名+模块名;
version:当前项目的版本号,例如0.0.1snapshot 第一个表示大版本号、第二个表示分支版本号、第三表示小版本号、最后的表示版本的状态:snapshot快照、alpha内部测试、beta 公测、Release稳定、GA正式发布;
仓库:所谓仓库就是存放东西的地方,Maven仓库就是放置所有JAR文件(WAR,ZIP,POM等等)的地方,仓库分为本地仓库和中央仓库,运行Maven的时候,Maven所需要的任何构件都是直接从本地仓库获取的。如果本地仓库没有,它会首先尝试从远程仓库下载构件至本地仓库,然后再使用本地仓库的构件。
完整的项目构建过程:清理、编译、测试、打包、集成测试、验证、部署。
Pom.xml文件常用元素介绍:
project pom的根元素,用来设定一些约束;
<modelversion>4.0.0</modelversion>定义当前pom的版本;
坐标:<groupId></groupId>定义当前的项目的Id、<artifactId></artifactId>模块标识、<version></version>当前项目版本;
<packaging>打包方式</packaging>默认为jar,此外还有war、zip、pom;
<name>项目描述名</name>
<url>项目的url地址</url>
<description>项目的描述</description>
<dependencies>依赖
<dependency>坐标</dependency>
</dependencies>
<exclusions>排除依赖
<exclusion> </exclusion>
</exclusions>
<build>构建的行为提供相应的支持
<plugins>
<plugin>坐标</plugin>
</plugins>
</build>
<parent>父模块的坐标</parent> 用于继承
<modules></modules>聚合
依赖:在古惑仔电影中山鸡跟着南哥混,南哥跟着比哥混,所以山鸡也就跟着比哥混,他们之间就是一种依赖关系 。在实际中就是一个项目依赖另一个项目,在pom.xml中就是通过<dependencies>元素进行设置的。
依赖的范围作用域scope:compile、provided、test、running、system、import;
依赖冲突:1.短路优先,谁距离近先依赖那个;
2.如果路径相同,谁先生命的依赖在先,依赖那个;
聚合:使用<modules>元素使多个模块组织在一起;
继承:利用面向对象的思想将共公的一些依赖放到父项目中,在子模块继承。使用<parent>父模块坐标</parent>
以上是我在学习Maven是一些收获,分享出来,有什么不对或者不同的见解请提出来,谢谢~