Maven项目,依赖,构建配置,以及构件:所有这些都是要建模和表述的对象。这些对
象通过一个名为项目对象模型(Project Object Model, POM)的XML文件描述。这个POM
告诉Maven它正处理什么类型的项目,如何修改默认的行为来从源码生成输出。同样
的方式,一个Java Web应用有一个 web.xml 文件来描述,配置,及自定义该应用,一个
Maven项目则通过一个 pom.xml 文件定义。
POM包含了四类描述和配置:
1、项目总体信息
它包含了一个项目的而名称,项目的URL,发起组织,以及项目的开发者贡献者
列表和许可证。
2、构建设置
在这一部分,我们自定义Maven构建的默认行为。我们可以更改源码和测试代码
的位置,可以添加新的插件,可以将插件目标绑定到生命周期,我们还可以自定
义站点生成参数。
3、构建环境
构建环境包含了一些能在不同使用环境中 激活的profile。例如,在开发过程
中你可能会想要将应用部署到一个而开发服务器上,而在产品环境中你会需要将
应用部署到产品服务器上。构建环境为特定的环境定制了构建设置,通常它还会
由 ~/.m2 中的自定义 settings.xml 补充
4、POM关系
一个项目很少孤立存在;它会依赖于其它项目,可能从父项目继承POM设置,它
要定义自身的坐标,可能还会包含子模块
<code class="hljs r has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; word-wrap: normal; background: transparent;"><project xmlns=<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"http://maven.apache.org/POM/4.0.0"</span> xmlns:xsi=<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"http://www.w3.org/2001/XMLSchema-instance"</span> xsi:schemaLocation=<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"</span>> <modelVersion><span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">4.0</span><span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">.0</span></modelVersion> <!-- 基本设置 --> <groupId><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">...</span></groupId> <artifactId><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">...</span></artifactId> <version><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">...</span></version> <packaging><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">...</span></packaging> <dependencies><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">...</span></dependencies> <parent><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">...</span></parent> <dependencyManagement><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">...</span></dependencyManagement> <modules><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">...</span></modules> <properties><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">...</span></properties> <!-- 构建过程的设置 --> <build><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">...</span></build> <reporting><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">...</span></reporting> <!-- 项目信息设置 --> <name><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">...</span></name> <description><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">...</span></description> <url><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">...</span></url> <inceptionYear><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">...</span></inceptionYear> <licenses><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">...</span></licenses> <organization><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">...</span></organization> <developers><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">...</span></developers> <contributors><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">...</span></contributors> <!-- 环境设置 --> <issueManagement><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">...</span></issueManagement> <ciManagement><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">...</span></ciManagement> <mailingLists><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">...</span></mailingLists> <scm><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">...</span></scm> <prerequisites><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">...</span></prerequisites> <repositories><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">...</span></repositories> <pluginRepositories><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">...</span></pluginRepositories> <distributionManagement><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">...</span></distributionManagement> <profiles><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">...</span></profiles></project></code>
0 0