maven的pom文件配置,mavenpom文件

  maven的pom文件配置,mavenpom文件

  砰的一声是什么?

  pom.xml是专家的核心文件,是专家用来构建项目的配置文件,就象蚂蚁的build.xml。对于大多数项目来说,缺省的pom.xml包含了一些默认值,通常情况下你不需要在你的pom.xml里设置这些值。例如:

  缺省的构建目录是"目标"目录缺省的源目录是" src/main/java "目录缺省的构建目录是" src/main/test "目录

  pom.xml的配置信息包括:

  项目基本信息,如项目版本、描述、开发人员、邮件列表项目依赖关系要执行的插件或目标构建配置文件

  下面参考我的第一个专家命令生成的pom.xml来讲解它的配置信息

  项目xmlns=1000。00 .00。

  型号版本4 .0 .0/型号版本

  groupId com。我的公司。app/groupId

  项目的名称我的应用程序/artifactId

  包装罐/包装

  版本1.0-快照/版本

  名称专家快速入门原型/名称

  http://maven.apache.org/URL网址

  属国

  属国

  groupId junit /groupId

  artifactId junit /artifactId

  版本3 .8 .1/版本

  范围测试/范围

  /依赖关系

  /依赖关系

  /项目

  pom.xml文件的项目根元素。

  模型版本设置砰的一声版,类似于设置项目版本,目前好像maven 2只允许该值为4.0.0

  组名设置项目的组织或团体的ID,它是项目的唯一识别之一(另一个是artifactId)。组名通常以完整域名作为属性值,例如所有专家插件的组名的属性值为org.apache.maven.plugins

  项目的名称设置当前项目将生成的主要伪像的唯一基本名称(请注意:是基本名称,而不是姓名,因为工件名称是由" artifactId -版本"组成,例如myapp-1.0.jar)。

  包装设置此工件使用的包类型(例如罐子、战争、耳朵等。)。该属性值不仅是用来设置被生成的假象是罐子,战争还是耳朵,还用来设置包装工件时要过程的生命周期,即罐子,战争,耳朵的构建生命周期是不同的包装的缺省属性值为罐子。如果你的项目要包裹成罐子,你不需要设置该属性

  版本设置项目生成的假象的版本7 .专家能帮你进行版本管理。如果你看到该属性值里包含有"快照"字符串,则表示该项目处于开发阶段,而不是发布阶段。

  名字设置项目名称,该属性值通常用于专家生成的文档。

  全球资源定位器(统一资源定位器)设置该项目的网站url .该属性值通常用于专家生成的文档

  描述设置项目描述该属性值通常用于专家生成的文档

  超级砰的一声

  超级砰的一声是专家的默认POM,它设置了专家的基本默认值(例如构建目录为"目标").它的所有设置会被你的项目的pom.xml继承,你如果要覆盖缺省设置,就需要进行显式设置。

  下面是超级砰的一声内容:

  项目

  型号版本4 .0 .0/型号版本

  名称专家默认项目/名称

  仓库

  仓库

  编号中心/id

  名称专家知识库切换面板/名称

  布局默认值/布局

  http://repo1.maven.org/maven2/URL网址

  快照

  启用假/启用

  /快照

  /存储库

  /存储库

  插件库

  插件工厂

  编号中心/id

  名称专家插件库/名称

  http://repo1.maven.org/maven2/URL网址

  布局默认值/布局

  快照

  启用假/启用

  /快照

  放

  从不更新策略/更新策略

  /版本

  /pluginRepository

  /插件仓库

  建设

  目录目标/目录

  输出目录目标/类/outputDirectory

  姓氏$ { POM。工件id }-$ { POM。版本}/最终名称

  testOutputDirectory目标/测试类/testOutputDirectory

  源目录src/main/java /sourceDirectory

  脚本源目录src/main/scripts/脚本源目录

  testSourceDirectory src/test/Java/testSourceDirectory

  资源

  资源

  目录src/main/resources /directory

  /资源

  /资源

  测试资源

  测试资源

  目录src/测试/资源/目录

  /testResource

  /testResources

  /构建

  报告

  输出目录目标/站点/outputDirectory

  /报告

  /项目

  最小砰的一声

  一个pom.xml必须要有的东东是:

  项目rootmodelVersion -应该设置为groupId -项目组的身份证.工件Id -工件(项目)版本的身份证-指定组下工件的版本

  项目

  型号版本4 .0 .0/型号版本

  groupId com。我的公司。app/groupId

  项目的名称我的应用程序/artifactId

  版本1/版本

  /项目

  其中的groupId、artifactId和版本组成了项目的完全限定的工件名称:groupId : artifactId:版本,例如上例的完整工件名称为 com.mycompany.app:my-app:1

  在最小砰的一声里,没有设置包装,那么会使用缺省值:罐子。

  也没有设置仓库。如果没有仓库属性,就会继承超级砰的一声的仓库配置,maven在执行这个最小砰的一声时,就会按从缺省的存储库:http://repo1.maven.org/maven2下载相关的依赖性。

  项目继承

  项目继承是子项目继承父项目!

  pom.xml中能被合并(合并)的元素包括:

  依赖性开发人员和贡献者使用匹配的idsplugin配置资源列出(包括报告)插件执行

  超级砰的一声就是项目继承最典型的例子。你也可以通过在子项目pom.xml里设置父元素,从而实现继承父pom。

  示例一

  场景

  我们使用之前的那个artifact,com.mycompany.app:my-app:1 .同时我们还有另外一个artifact,com.mycompany.app:我的模块:1 .我的模块项目的pom.xml为:

  项目

  型号版本4 .0 .0/型号版本

  groupId com。我的公司。app/groupId

  项目的名称我的模块/artifactId

  版本1/版本

  /项目

  然后我们看看这2个假象的目录结构

   -我的模块

   ` - pom.xml

  `- pom.xml

  注意:my-module/pom.xml是com.mycompany.app的POM:我的模块:1而pom.xml是com.mycompany.app的POM:我的应用:1

  解决方案

  如果我们想让com.mycompany.app:my-app:1成为com.mycompany.app:我的模块:1的父神器,我们就需要将com.mycompany.app:我的模块:1的砰的一声修改成:

  com.mycompany.app:我的模块:1的砰的一声

  项目

  父母

  groupId com。我的公司。app/groupId

  项目的名称我的应用程序/artifactId

  版本1/版本

  /父母

  型号版本4 .0 .0/型号版本

  groupId com。我的公司。app/groupId

  项目的名称我的模块/artifactId

  版本1/版本

  /项目

  通过父元素,可以设置砰的一声的父pom,从而从父砰的一声里继承一些配置。

  另外,如果你想该模块的组名和版本设置成和父母一样,那么你可以去掉子砰的一声的组名与版本元素。如

  项目

  父母

  groupId com。我的公司。app/groupId

  项目的名称我的应用程序/artifactId

  版本1/版本

  /父母

  型号版本4 .0 .0/型号版本

  项目的名称我的模块/artifactId

  /项目

  这样就会继承父砰的一声的组名和版本

  示例2

  场景

  示例一能够正常运行的先决条件是:父项目已经安装到本地存储库或者父项目pom.xml必须恰好处于子项目pom.xml的上一级目录。

  而如果父项目没有安装到存储库或者象下列结构,使用示例一的代码是不行的:

   -我的模块

   ` - pom.xml

  `-父母

  `- pom.xml

  解决方案

  对于上面的目录结构(或者其他不属于示例一的结构),子pom.xml需要添加相对路径元素来设置你的父项目的路径。如:

  项目

  父母

  groupId com。我的公司。app/groupId

  项目的名称我的应用程序/artifactId

  版本1/版本

  相对路径./parent/pom.xml /relativePath

  /父母

  型号版本4 .0 .0/型号版本

  项目的名称我的模块/artifactId

  /项目

  项目聚合

  项目聚合是子项目委托父项目执行。它和项目继承很相似,项目继承是在子pom.xml里设置父项目,而项目聚合则是在父pom.xml里设置子项目。

  子项目是通过在父pom.xml里定义组件来设置项目聚合的100 .项目汇总意味着在执行父项目时,也会同时执行定义了聚合的子项目。

  另外还有一点要注意:设置了项目聚合的父项目pom.xml必须把包装的值设置为“pom”

  示例3

  场景

  依然是使用示例一的父项目和子项目。

  com.mycompany.app:my-app:1的砰的一声

  项目

  型号版本4 .0 .0/型号版本

  groupId com。我的公司。app/groupId

  项目的名称我的应用程序/artifactId

  版本1/版本

  /项目

  com.mycompany.app:我的模块:1的砰的一声

  项目

  型号版本4 .0 .0/型号版本

  groupId com。我的公司。app/groupId

  项目的名称我的模块/artifactId

  版本1/版本

  /项目

  目录结构

   -我的模块

   ` - pom.xml

  `- pom.xml

  解决方案

  如果我们要把我的模块委托给我的应用程序,我们需要修改父pom.xml如下

  项目

  型号版本4 .0 .0/型号版本

  groupId com。我的公司。app/groupId

  项目的名称我的应用程序/artifactId

  版本1/版本

  包装POM/包装

  模块

  模块我的-模块/模块

  /模块

  /项目

  实例四

  场景

  示例31能够正常运行的先决条件是:子项目已经安装到本地存储库或者父项目pom.xml必须恰好处于子项目pom.xml的上一级目录。

  而如果子项目没有安装到存储库或者象下列结构,使用示例3的代码是不行的:

   -我的模块

   ` - pom.xml

  `-父母

  `- pom.xml

  解决方案

  类似于实施例3,但是设置子项目的小路不同。

  项目

  型号版本4 .0 .0/型号版本

  groupId com。我的公司。app/groupId

  项目的名称我的应用程序/artifactId

  版本1/版本

  包装POM/包装

  模块

  组件./我的模块/模块

  /模块

  /项目

  项目继承与项目聚合

  使用项目继承的情况:如果你有多个专家项目,而且它们有一些相同的配置,那么你就应该重构你的项目,把这些相同的配置从项目中提取出来,然后把这些相同配置制作成一个父项目,然后你所有的项目都继承该父项目。超级砰的一声就是最典型的项目继承例子

  使用项目聚合的情况:如果你有一组项目常常需要同时进行专家构建的操作,那么你就可以创建一个父项目,然后把这组项目作为该父项目的模块,这样你只需要专家父项目即可执行这组项目。一个典型的例子就是:项目A是构建罐子,项目B是包战争,该战争会把项目A的冲突纳入,项目C是包耳朵,该耳朵会把项目B的战争纳入

  当然,你可以同时使用项目继承和项目聚合,即在父项目里设置模块,同时在子项目里设置父项目。

  转自:http://www。嘟嘟沃夫。com/wiki/2008/763超文本标记语言

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: