约定(惯例)优先于配置
这个原则说对于一些配置信息,maven会有给定的default默认值,这样,就不需要用户去手动配置更多的信息了。比如,maven-complier的版本。
标准的目录结构
如果没有修改配置的话,我们的代码存放在src/main/java目录下,*.class在target目录下,配置及静态文件默认放在src/main/webapp/WEB-INF目录下。我们只需要将源代码放置到正确的目录下,就可以了。
项目描述符pom.xml
这个文件的名字默认即为pom.xml。
pom.xml
pom(project object model),定义一个maven项目,存放项目的类型,项目的配置信息。artifact(构建)于project几乎等价。
项目类型:<package>:pom,jar,war...
坐标:<groupId><artifactId><version>
属性:<properties>
属性标签定义常量,它的格式如下:
<properties>
<name>content</name>
</properties>
使用时,采用${name}的方法来获取。当我们需要改动一个变量时,只用更改一处即可。
依赖<dependencies>
构建配置<build>
构建<build>标签里存放的主要是maven构建的配置项,比如插件等。
多项目继承关系
子项目:<parent>和父项目<modules>,分别存放项目的信息。
项目总体信息
更多存在于开源项目中,存放开源协议,作者等信息。
存在的问题
我们的项目一般都是拆分为多个子项目来进行开发的,在这个过程中,总是会出现多个项目配置信息重复的现象,修改的时候会很繁琐,可能会出现依赖版本不一致等情况,会导致配置管理混乱。
针对这个问题,我们借助面向对象的思想,采用集成的思路,将公共部分存放到父节点中。
继承:
继承存在Override重写的现象,子pom的配置优先。
可继承项:
坐标属性,依赖配置,插件配置和一般性信息,如开发者信息等。
对于pom来说,也有继承的根,所有的pom都继承自Super pom文件。它是maven的组成部分,存放在maven的安装目录下。如果没有显式指明,默认从super pom继承。Super pom定义了一些信息,如默认的文件结构,默认的编译器版本,默认的中央仓库等。
mvn help:effective-pom//查看继承后的pom
手动继承
如果我们想要使用手动继承的方式来管理配置的话,需要借助<parent>元素,来声明继承的对象。
多么块构建
父项目
类型为pom,定义<modules>
子项目
配置<parent>,类型一般为war或者jar。
我们即使用继承,又使用组合,将多个子模块聚合到父pom中,在构建时会方便许多。
网友评论