Maven 工程POM文件编写(项目构建配置元素)

2019-10-08 0 By admin

一、父项目的坐标

  1. parent:如果项目中没有规定某个元素的值,那么父项目中的对应值即为项目的默认值。 坐标包括group ID,artifact ID和 version。
  2. –artifactId:#被继承的父项目的构件标识符
  3. –groupId:#被继承的父项目的全球唯一标识符
  4. –version:#被继承的父项目的版本
  5. –relativePath:#父项目的pom.xml文件的相对路径。相对路径允许你选择一个不同的路径。默认值是../pom.xml。Maven首先在构建当前项目的地方寻找父项目的pom,其次在文件系统的这个位置(relativePath位置),然后在本地仓库,最后在远程仓库寻找父项目的pom。

二、项目的依赖

  1. dependencies: #该元素描述了项目相关的所有依赖。 这些依赖组成了项目构建过程中的一个个环节。它们自动从项目定义的仓库中下载
  2. –dependency:
  3. —-groupId: org.apache.maven
  4. —-artifactId: maven-artifact
  5. —-version: 3.8.1
  6. —-type: jar #依赖类型,默认类型是jar。它通常表示依赖的文件的扩展名,但也有例外。
  7. —-classifier: #依赖的分类器。分类器可以区分属于同一个POM,但不同构建方式的构件。分类器名被附加到文件名的版本号后面。例如,如果你想要构建两个单独的构件成JAR,一个使用Java 1.4编译器,另一个使用Java 6编译器,你就可以使用分类器来生成两个单独的JAR构件。
  8. —-scope: test #依赖范围。在项目发布过程中,帮助决定哪些构件被包括进来。欲知详情请参考依赖机制。
  9. —-systemPath: #仅供system范围使用。注意,不鼓励使用这个元素,并且在新的版本中该元素可能被覆盖掉。
  10. —-exclusions: #当计算传递依赖时, 从依赖构件列表里,列出被排除的依赖构件集。
  11. ——exclusion:
  12. ——–artifactId: spring-core
  13. ——–groupId: org.springframework
  14. —-optional: true #可选依赖;可选依赖阻断依赖的传递性。

scope: 依赖范围,配置参数介绍

  1. – compile :默认范围,用于编译
  2. – provided:类似于编译,但支持你期待jdk或者容器提供,类似于classpath
  3. – runtime: 在执行时需要使用
  4. – test: 用于test任务时使用
  5. – system: 需要外在提供相应的元素。通过systemPath来取得
  6. – systemPath: 仅用于范围为system。提供相应的路径
  7. – optional: 当项目自身被依赖时,标注依赖是否传递。用于连续依赖时使用

三、项目 dependencyManagement 配置

  1. dependencyManagement: #继承自该项目的所有子项目的默认依赖信息。这部分的依赖信息不会被立即解析,而是当子项目声明一个依赖(必须描述group ID和artifact ID信息),如果group ID和artifact ID以外的一些信息没有描述,则通过group ID和artifact ID匹配到这里的依赖,并使用这里的依赖信息
  2. –dependencies:
  3. —-dependency: ##参见 dependencies/dependency元素

四、项目构建环境条件

  1. prerequisites: #描述了这个项目构建环境中的前提条件。
  2. –maven: #构建该项目或使用该插件所需要的Maven的最低版本

五、项目模块配置

  1. modules: #模块(有时称作子项目) 被构建成项目的一部分。列出的每个模块元素是指向该模块的目录的相对路径
  2. repositories: #发现依赖和扩展的远程仓库列表
  3. –repository: #包含需要连接到远程仓库的信息
  4. —-releases: #如何处理远程仓库里发布版本的下载
  5. ——enabled: #true或者false表示该仓库是否为下载某种类型构件(发布版,快照版)开启。
  6. ——updatePolicy: #该元素指定更新发生的频率。Maven会比较本地POM和远程POM的时间戳。这里的选项是:always(一直),daily(默认,每日),interval:X(这里X是以分钟为单位的时间间隔),或者never(从不)。
  7. ——checksumPolicy: #Maven验证构件校验文件失败时该怎么做:ignore(忽略),fail(失败),或者warn(警告)
  8. —-snapshots: #如何处理远程仓库里快照版本的下载。
  9. ——enabled:
  10. ——updatePolicy:
  11. ——checksumPolicy:
  12. —-id: banseon-repository-proxy #远程仓库唯一标识符。可以用来匹配在settings.xml文件里配置的远程仓库
  13. —-name: banseon-repository-proxy #远程仓库名称
  14. —-url: http://192.168.1.169:9999/repository/ #远程仓库URL,按protocol://hostname/path形式
  15. —-layout: default #用于定位和排序构件的仓库布局类型-可以是default(默认)或者legacy(遗留)

六、项目插件配置

  1. pluginRepositories: #发现插件的远程仓库列表,这些插件用于构建和报表
  2. –pluginRepository: #包含需要连接到远程插件仓库的信息.参见repositories/repository元素

七、构建项目需要的信息

  1. build: #构建项目需要的信息
  2. –sourceDirectory:#该元素设置了项目源码目录,当构建项目的时候,构建系统会编译目录里的源码。该路径是相对于pom.xml的相对路径
  3. –scriptSourceDirectory: #元素设置了项目脚本源码目录,该目录和源码目录不同:绝大多数情况下,该目录下的内容 会被拷贝到输出目录(因为脚本是被解释的,而不是被编译的)
  4. –testSourceDirectory: #该元素设置了项目单元测试使用的源码目录,当测试项目的时候,构建系统会编译目录里的源码。该路径是相对于pom.xml的相对路径
  5. –outputDirectory: #被编译过的应用程序class文件存放的目录
  6. –testOutputDirectory: #被编译过的测试class文件存放的目录
  7. –extensions: #使用来自该项目的一系列构建扩展
  8. —-extension: #描述使用到的构建扩展
  9. ——groupId: #构建扩展的groupId
  10. ——artifactId: #构建扩展的artifactId
  11. ——version: #构建扩展的版本
  12. –defaultGoal:#当项目没有规定目标(Maven2 叫做阶段)时的默认值
  13. –resources: #这个元素描述了项目相关的所有资源路径列表,例如和项目相关的属性文件,这些资源被包含在最终的打包文件里
  14. —-resource: #这个元素描述了项目相关或测试相关的所有资源路径
  15. ——targetPath: #描述了资源的目标路径。该路径相对target/classes目录
  16. ——filtering: #是否使用参数值代替参数名。参数值取自properties元素或者文件里配置的属性,文件在filters元素里列出
  17. ——directory: #描述存放资源的目录,该路径相对POM路径
  18. ——includes: #包含的模式列表,例如**/*.xml
  19. ——excludes: #排除的模式列表,例如**/*.xml
  20. –testResources: #这个元素描述了单元测试相关的所有资源路径,例如和单元测试相关的属性文件
  21. —-testResource:
  22. ——targetPath:
  23. ——filtering:
  24. ——directory:
  25. ——includes:
  26. ——excludes:
  27. –directory: #构建产生的所有文件存放的目录
  28. –finalName: #产生的构件的文件名,默认值是${artifactId}-${version}。
  29. –filters: #当filtering开关打开时,使用到的过滤器属性文件列表
  30. –pluginManagement: #子项目可以引用的默认插件信息。该插件配置项直到被引用时才会被解析或绑定到生命周期。给定插件的任何本地配置都会覆盖这里的配置
  31. —-plugins: #使用的插件列表
  32. ——plugin: #lugin元素包含描述插件所需要的信息。
  33. ——–groupId:
  34. ——–artifactId:
  35. ——–version:
  36. ——–extensions: #是否从该插件下载Maven扩展(例如打包和类型处理器),由于性能原因,只有在真需要下载时,该元素才被设置成enabled
  37. ——–executions: #在构建生命周期中执行一组目标的配置。每个目标可能有不同的配置
  38. ———-execution: #execution元素包含了插件执行需要的信息
  39. ————id: #行目标的标识符,用于标识构建过程中的目标,或者匹配继承过程中需要合并的执行目标
  40. ————phase: #绑定了目标的构建生命周期阶段,如果省略,目标会被绑定到源数据里配置的默认阶段
  41. ————goals: #配置的执行目标
  42. ————inherited: #配置是否被传播到子POM
  43. ————configuration: #作为DOM对象的配置
  44. ——–dependencies: #项目引入插件所需要的额外依赖
  45. ———-dependency: #参见dependencies/dependency元素
  46. ——–inherited: #任何配置是否被传播到子项目
  47. ——–configuration: #作为DOM对象的配置
  48. –plugins: #使用的插件列表
  49. —-plugin: #参见build/pluginManagement/plugins/plugin元素

八、构建项目时profile信息

  1. profiles: #在列的项目构建profile,如果被激活,会修改构建处理
  2. –profile: #根据环境参数或命令行参数激活某个构建处理
  3. —-id: #构建配置的唯一标识符。即用于命令行激活,也用于在继承时合并具有相同标识符的profile
  4. —-activation: #自动触发profile的条件逻辑。Activation是profile的开启钥匙。profile的力量来自于它
  5. 能够在某些特定的环境中自动使用某些特定的值;这些环境通过activation元素指定。activation元素并不是激活profile的唯一方式
  6. ——activeByDefault: #profile默认是否激活的标志
  7. ——jdk: #当匹配的jdk被检测到,profile被激活
  8. ——os: #当匹配的操作系统属性被检测到,profile被激活。
  9. ——–name: Windows XP
  10. ——–family: Windows
  11. ——–arch: x86
  12. ——–version: 5.1.2600
  13. ——property: #如果Maven检测到某一个属性(其值可以在POM中通过${名称}引用),其拥有对应的名称和值,Profile就会被激活。如果值字段是空的,那么存在属性名称字段就会激活profile,否则按区分大小写方式匹配属性值字段
  14. ——–name: mavenVersion
  15. ——–value: 2.0.3
  16. ——file: #提供一个文件名,通过检测该文件的存在或不存在来激活profile。
  17. ——–exists: /usr/–/maven-guide-zh-to-production/workspace/ #如果指定的文件存在,则激活profile
  18. ——–missing: /usr/–/maven-guide-zh-to-production/ #如果指定的文件不存在,则激活profile
  19. —-build: #构建项目所需要的信息。参见build元素
  20. —-modules: #模块(有时称作子项目) 被构建成项目的一部分。列出的每个模块元素是指向该模块的目录的相对路径
  21. —-repositories: #发现依赖和扩展的远程仓库列表。
  22. ——repository: #参见repositories/repository元素
  23. ——–releases:
  24. ———-enabled:
  25. ———-updatePolicy:
  26. ———-checksumPolicy:
  27. ——–snapshots:
  28. ———-enabled:
  29. ———-updatePolicy:
  30. ———-checksumPolicy:
  31. ——–id:
  32. ——–name:
  33. ——–url:
  34. ——–layout:
  35. —-pluginRepositories: #发现插件的远程仓库列表,这些插件用于构建和报表
  36. ——pluginRepository: #包含需要连接到远程插件仓库的信息.参见repositories/repository元素
  37. —-dependencies: #描述了项目相关的所有依赖。 这些依赖组成了项目构建过程中的一个个环节。它们自动从项目定义的仓库中下载。
  38. ——dependency: #参见dependencies/dependency元素
  39. —-reports: #不赞成使用. 现在Maven忽略该元素
  40. —-reporting: #该元素包括使用报表插件产生报表的规范。当用户执行“mvn site”,这些报表就会运行。 在页面导航栏能看到所有报表的链接。
  41. —-dependencyManagement: #参见dependencyManagement元素
  42. ——dependencies:
  43. ——–dependency: #参见dependencies/dependency元素
  44. —-distributionManagement: #参见distributionManagement元素
  45. —-properties: