不得不说的POM

定义:POM(Project Object Model)项目对象模型,是Maven工程的基本工作单元,是一个名称为pom.xml的xml文件,包含了项目的基本信息,描述了项目如何构建和和项目的依赖等。

pom.xml中可以配置如下信息:


pom.xml文件的结构

pom.xml文件必须指明groupId、artifactId、version。groupId通常是指公司,一般采用公司域名倒写的形式,artifacId是具体项目的名称,version是版本号。groupId和artifactId一起在仓库中唯一标识了一个项目,而加上version再能够完整标识一个项目和它的生命周期。需要特别说明的是version分为snapshot和release。下面我们通过一个例子来说明两者的区别。

假设A公司有一个开源项目juint,然后今天在中央仓库发布了一个1.0-release版本,B公司的项目依赖A公司的junit项目,明天A公司发布了2.0-release的更新,B公司的项目并不会自动更新junit的版本,需要开发人员手动在pom.xml中去配置junit的新版本。

这对于依赖第三方开源项目的项目来说没有什么问题,但是如果此时B公司同时开发两个项目和P1和P2,并且P2依赖于P1,那么如果P1项目更新了,P2项目要想使用P1项目的新特性就需要迭代一个版本号,同时也需要在P2项目的pom.xml中更新P1项目的版本号。这对于频繁构建的开发项目来说,是非常令人发狂的。所以snapshot版本应运而生。P1项目发布了一个1.0-snapshot版本,那么P2即使在本地缓存库中已经存在了版本为1.0-snapshot的版本,仍然会去仓库查询是否有最新的1.0-snapshot更新。

需要特别注意的是,在正式发布的项目中,应该避免使用依赖项目的snapshot版本。


你可能感兴趣的:(不得不说的POM)