Maven的四⼤特性
依赖管理系统
任何基于Maven构建的项⽬⾃身也必须定义这三项属性,⽣成的包可以是Jar包,也可以是war包或者jar包。⼀个典型的依赖引⽤如下所示:、
javax.servlet com.baidu
javax.servlet-api ueditor echarts
3.1.0
坐标属性的理解
Maven坐标为各种组件引⼊了秩序,任何⼀个组件都必须明确定义⾃⼰的坐标。
groupId
定义当前Maven项⽬⾪属的实际项⽬-公司名称。(jar包所在仓库路径) 由于Maven中模块的概念,因此⼀个实际项⽬往往会被划分为很多模块。 ⽐如spring是⼀个实际项⽬,其对应的Maven模块会有很多,如spring-core,spring-webmvc等。
artifactId
该元素定义实际项⽬中的⼀个Maven模块-项⽬名, 推荐的做法是使⽤实际项⽬名称作为artifactId的前缀。 ⽐如: spring-bean, spring-webmvc等。
version
该元素定义Maven项⽬当前所处的版本。
多模块构建
项⽬复查时 dao service controller 层分离将⼀个项⽬分解为多个模块已经是很通⽤的⼀种⽅式。
在Maven中需要定义⼀个parent POM作为⼀组module的聚合POM。在该POM中可以使⽤ 标签来定义⼀组⼦模块。parent POM不会有什么实际构建产出。⽽parent POM中的build配置以及依赖配置都会⾃动继承给⼦module。
⼀致的项⽬结构
Ant时代⼤家创建Java项⽬⽬录时⽐较随意,然后通过Ant配置指定哪些属于source,那些属于
testSource等。⽽Maven在设计之初的理念就是Conversion over configuration(约定⼤于配置)。其制定了⼀套项⽬⽬录结构作为标准的Java项⽬结构,解决不同ide 带来的⽂件⽬录不⼀致问题。
Maven命令
作为开发利器的maven,为我们提供了⼗分丰富的命令,了解maven的命令⾏操作并熟练运⽤常⻅的maven命令还是⼗分必要的,即使譬如IDEA等⼯具给我提供了图形界⾯化⼯具,但其底层还是依靠maven命令来驱动的。
Maven的命令格式如下
mvn [plugin-name]:[goal-name]
命令代表的含义:执⾏ plugin-name 插件的 goal-name ⽬标
常⽤命令
注意:运⾏maven命令的时候,⾸先需要定位到maven项⽬的⽬录,也就是项⽬的pom.xml⽂件所在的⽬录。否则,必以通过参数来指定项⽬的⽬录。
命令参数
上⾯列举的只是⽐较通⽤的命令,其实很多命令都可以携带参数以执⾏更精准的任务。
-D 传⼊属性参数
-P 使⽤指定的Profile配置
Maven仓库的基本概念
对于Maven来说, 仓库只分为两类: 本地仓库和远程仓库
当Maven根据坐标寻找构件的时候,它⾸先会查看本地仓库&#