`
lzzy_alex
  • 浏览: 28842 次
社区版块
存档分类
最新评论

Maven - 项目对象模型POM(三)

 
阅读更多

POM是项目对象模型(Project Object Model)的简称,从前面的入门案例中,我们可以看到在项目根目录存在pom.xml文件,该文件是Maven项目核心配置文件。事实上,任何一个Maven项目都要求在根目录存放这样一个文件,即使该项目没有任何代码(如聚合或父级)。下面,让我们对pom.xml文件常用结构进行解读吧:

 

<!--文件根节点-->
<project>
  <modelVersion>          <!--POM版本声明-->
  
  <!--父级POM声明,如同 this_pom extends parent_pom,继承可实现消重-->
  <parent>
    <groupId/>            <!--组织名称.项目名称,如 org.apache.maven--> 
    <artifactId/>         <!--模块名称,如 reporting-->
    <version/>            <!--构件版本,如 1.0-SNAPSHOT-->
    <relativePath/>       <!--父级pom.xml文件相对路径,缺省 ../pom.xml-->
  </parent>

  <groupId/>
  <artifactId/>
  <version/>
  <packaging/>            <!--构件打包方式,常有jar,war,ear,pom,缺省jar-->
 
  <modules/>              <!--子模块定义,通常是聚合项目时使用-->

  <!--属性定义,${spring.version}-->
  <properties>
    <key>value</key>
  </properties>

  <!--依赖管理,如定义spring, lucene, junit等资源的依赖-->
  <dependencies>
    <dependency>
      <groupId/>
      <artifactId/>
      <version/>
    </dependency>
  </dependencies>

  <plugins>            <!--自定义插件<Maven已经为各生命周期事件提供了缺省的插件>-->
  <repositories/>      <!--仓库定义-->
  <build/>             <!--构建方式-->
</project>

 

Note : 当然,Maven能为项目提供的服务能力还不止上面所描述的,包括(开发者信息,项目元数据信息,缺陷跟踪等),如果大家需要更完整的项目管理信息,可另行参考相关资源。

 

现在,让我们对pom.xml文件结构进行梳理:

 

1.坐标信息(通过 groupId,artifactId,version 确定)

2.继承与聚合(parent, modules)

3.依赖管理(dependencies)

4.仓库管理(repositories)

5.插件管理(plugins)

 

坐标信息

Maven不仅是一个项目管理工具,还是开源项目信息管理平台。只要你有好的项目,都可以发布到Maven中央仓库中,供大家下载使用。那么众多项目构件就是通过坐标方式管理的,可以把中央仓库想象成一个三维空间,每一点(groupId,artifactId,version)即代表一个构件。如同我们在dependency中使用三方构件一样,只需要提供坐标信息即可。

 

继承与聚合

通常我们会将项目分成若干模块进行开发,各模块相对独立,却又会共享一点基础信息。这时就可以通过继承,避免共享信息的重复定义。Maven通过关键字 parent 定义父子关系。

子模块可独立于其它模块开发,当我想把各模块组织起来,构成一个项目时,就可以使用聚合(modules)实现。

这是Maven源码包中pom.xml的代码,可以看出maven也是通过分模块开发,然后再聚合起来的。

<modules>
<module>maven-plugin-api</module>
<module>maven-model</module>
<module>maven-core</module>
<module>maven-settings</module>
<module>maven-artifact</module>
</modules>

 

依赖管理

通过Maven我们不需要手动下载jar包添加到classpath。使用dependency关键字及构件坐标信息,可以向仓库发出请求,自动下载构件并安装依赖关系。实践中,我们还会碰到包冲突的问题,比如:A和B两个包都依赖C,对C的版本要求还不一样,这时往往会出现不可预知的问题。后面我们会用单独的一个章节讲解Maven依赖管理。

 

仓库管理


Maven仓库分为两种,本地仓库和远程仓库。

本地仓库缺省安装路径在用户目录下,如:C:\Users\Administrator\.m2\repository,可修改setting.xml文件中的localRepository更换。

远程仓库主要有三种类型:私服,中央仓库及其他公共库。私服需要我们自己搭建(如Nexus),中央仓库指的是Maven中央仓库,其他公共库指某些因版权问题而无法托管在中央仓库的构件库。

当我们执行构建任务时,寻找路径优先级依次为:本地仓库 -> 私服 -> 中央仓库。

 

插件管理

Maven已经为各生命周期构建目标提供了缺省的内置插件绑定,如mvn test的surefire插件,同时也支持更丰富自定义插件使用。
 

至此,我们对POM文件的结构有了大致的了解,下面,让我们近距离看看Maven的依赖管理吧!

 

参考:

http://maven.apache.org/ref/3.3.3/maven-model/maven.html

  • 大小: 14.7 KB
分享到:
评论

相关推荐

    apache-maven-3.8.1.zip

    基于项目对象模型 (POM) 的概念,Maven 可以从一条中央信息中管理项目的构建、报告和文档。 压缩包内容: apache-maven-3.8.1-bin.zip、 apache-maven-3.8.1-bin.tar.gz、 apache-maven-3.8.1-src.zip、 apache-...

    apache-maven-3.8.5

    Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的项目管理工具软件。 Maven 除了以程序构建能力为特色之外,还提供高级项目管理工具。由于 Maven 的缺省构建规则有较高的可重用性,...

    apache-maven-3.5.4.zip

    Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的项目管理工具软件。 Maven 除了以程序构建能力为特色之外,还提供高级项目管理工具。由于 Maven 的缺省构建规则有较高的可重用性,...

    apache-maven-3.6.1-src.zip

    Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建、报告和文档的软件项目管理工具。 Maven 除了以程序构建能力为特色之外,还提供高级项目管理工具。

    apache-maven-3.2.5-src.zip

    Maven是基于项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具。 Maven 除了以程序构建能力为特色之外,还提供高级项目管理工具。由于 Maven 的缺省构建规则有较高的可重用...

    Maven项目对象模型(POM)

    Maven 项目对象模型 Maven搭建过程 web 模块加载另外一个web模块方法 Myeclipse Maven 忽略单元测试打包 一个多maven项目聚合的实例

    apache-maven-3.5.0-bin及配置详解

    apache-maven-3.5.0-bin 最新的版本 Maven项目对象模型(POM) 包含配置详解

    apache-maven-3.5.2

    Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具。 Maven 除了以程序构建能力为特色之外,还提供高级项目管理工具。由于 Maven 的缺省构建规则有较高的可重用性,...

    Apache Maven (apache-maven-3.8.4-bin.zip)

    Apache Maven (apache-maven-3.8.4-bin.zip)是一个软件项目管理和理解工具。基于项目对象模型 (POM) 的概念,Maven 可以从一条中央信息中管理项目的构建、报告和文档。

    apache-maven-3.5.0-bin

    apache-maven-3.5.0-bin 最新的版本 Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具。

    apache-maven-3.6.2.rar

    Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的项目管理工具软件。 Maven 除了以程序构建能力为特色之外,还提供高级项目管理工具。由于 Maven 的缺省构建规则有较高的可重用性,...

    apache-maven-3.3.9.rar

    项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的项目管理工具软件 Maven 除了以程序构建能力为特色之外,还提供高级项目管理工具。由于 Maven 的缺省构建规则有较高的可重用性,所以常常...

    apache-maven-3.0.4.rar

    Maven是基于项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具。 目前,绝大多数开发人员都把 Ant 当作 Java 编程项目的标准构建工具。遗憾的是,Ant 的项目管理工具(作为...

    Maven是基于项目对象模型(POM)

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

    apache-maven-3.3.9.zip

    Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具。 Maven 除了以程序构建能力为特色之外,还提供高级项目管理工具。由于 Maven 的缺省构建规则有较高的可重用性,...

    apache-maven-3.8.2-bin.zip

    Apache Maven (apache-maven-3.8.2-bin.zip)是一个软件项目管理和理解工具。基于项目对象模型 (POM) 的概念,Maven 可以从一条中央信息中管理项目的构建、报告和文档。

    apache-maven-3.8.2-bin.tar.gz

    Apache Maven (apache-maven-3.8.2-bin.tar.gz)是一个软件项目管理和理解工具。基于项目对象模型 (POM) 的概念,Maven 可以从一条中央信息中管理项目的构建、报告和文档。

    apache-maven-3.5.0.zip

    Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的项目管理工具软件。 Maven 除了以程序构建能力为特色之外,还提供高级项目管理工具。由于 Maven 的缺省构建规则有较高的可重用性,...

    Apache Maven (apache-maven-3.8.4-bin.tar.gz)

    Apache Maven (apache-maven-3.8.4-bin.tar.gz)是一个软件项目管理和理解工具。基于项目对象模型 (POM) 的概念,Maven 可以从一条中央信息中管理项目的构建、报告和文档。

Global site tag (gtag.js) - Google Analytics