Maven 模型生成器

有效的模型构建器,具有配置文件激活、继承、插值、...

主要组件是ModelBuilder ( javadoc , source ),其DefaultModelBuilder实现 ( javadoc , source ) 用于管理步骤序列。

该序列分为2个阶段:

  • 阶段1
    • 配置文件激活:查看可用的激活器。请注意,模型插值尚未发生,基于文件的激活插值仅限于${basedir}(从 Maven 3 开始)、系统属性和请求属性
    • 原始模型验证:ModelValidator ( javadoc ),及其DefaultModelValidator实现 ( source )
    • 模型规范化 - 合并重复项:ModelNormalizer ( javadoc ),及其DefaultModelNormalizer实现 ( source )
    • 配置文件注入:ProfileInjector ( javadoc ),及其DefaultProfileInjector实现 ( source )
    • 父级分辨率直到超级 pom
    • 继承程序集:InheritanceAssembler ( javadoc ),及其DefaultInheritanceAssembler实现 ( source )。注意project.urlproject.scm.connectionproject.scm.developerConnectionproject.scm.urlproject.distributionManagement.site.url有一个特殊的处理:如果没有覆盖在孩子,默认值是父母的一个孩子附加了工件 ID
    • 模型插值(见下文)
    • url 规范化:UrlNormalizer ( javadoc ),及其DefaultUrlNormalizer实现 ( source )
  • 第 2 阶段,可选插件处理
    • 模型路径翻译:ModelPathTranslator ( javadoc ),及其DefaultModelPathTranslator实现 ( source )
    • 插件管理注入:PluginManagementInjector ( javadoc ),及其DefaultPluginManagementInjector实现 ( source )
    • (可选)生命周期绑定注入:LifecycleBindingsInjector ( javadoc ),及其DefaultLifecycleBindingsInjector实现 ( source )
    • 依赖管理导入(用于<dependencyManagement>部分中pom类型的依赖)
    • 依赖管理注入:DependencyManagementInjector ( javadoc ),及其DefaultDependencyManagementInjector实现 ( source )
    • 模型规范化 - 注入默认值:ModelNormalizer ( javadoc ),及其DefaultModelNormalizer实现 ( source )
    • (可选)报告配置:ReportConfigurationExpander ( javadoc ),及其DefaultReportConfigurationExpander实现 ( source )
    • (可选)报告到解耦站点插件的转换:ReportingConverter ( javadoc ),及其DefaultReportingConverter实现 ( source )
    • (可选)插件配置:PluginConfigurationExpander ( javadoc ),及其DefaultPluginConfigurationExpander实现 ( source )
    • 有效的模型验证:ModelValidator ( javadoc ),及其DefaultModelValidator实现 ( source )

模型插值

模型插值包括用计算值替换${...} 。它在StringSearchModelInterpolator ( javadoc , source ) 中完成。

请注意,模型插值发生配置文件激活之后,然后配置文件激活不会从每个值中受益:基于文件激活的插值仅限于${basedir}(在 Maven 3 中引入并且在此上下文中不被弃用),系统属性和请求属性。

值从不同的语法按顺序评估:

价值 评价结果 常见的例子
project.*  
pom.* (已弃用
* (已弃用)
POM 内容(参见POM 参考 ${project.version}  
${project.build.finalName}  
${project.artifactId}  
${project.build.directory}
project.basedir  
pom.basedir不推荐使用) 
basedir不推荐使用
包含pom.xml文件的目录 ${project.basedir}
project.baseUri  
pom.baseUri已弃用
包含pom.xml文件作为 URI的目录 ${project.baseUri}
build.timestamp  
maven.build.timestamp
构建开始的 UTC 时间戳,采用yyyy-MM-dd'T'HH:mm:ss'Z'默认格式,可以用maven.build.timestamp.format POM 属性覆盖 ${maven.build.timestamp}
* 用户属性,使用-Dproperty=value从 CLI 设置 ${skipTests}
* 模型属性,例如在 pom 中设置的项目属性 ${any.key}
maven.home 当前 Maven 主页的路径。 ${maven.home}
maven.version 当前 Maven 执行的版本号(从 3.0.4 开始)。例如,“ 3.0.5 ”。 ${maven.version}
maven.build.version 当前 Maven 执行的完整构建版本(自 3.0.4 起)。例如,“ Apache Maven 3.2.2 (r01de14724cdef164cd33c7c8c2fe155faf9602da;2013-02-19T14:51:28+01:00) ”。 ${maven.build.version}
* Java 系统属性(参见JDK 参考 ${user.home}  
${java.home}
环境*  
*
环境变量 ${env.PATH}
设置。* 本地用户设置(参见设置参考 ${settings.localRepository}

注意

  • 模型插值后,${...}内容可以保留在模型中,稍后在设置插件参数时进行评估。这尤其发生在settings.* Settings Model的值中,
  • 编码配置已被定义为看起来像 POM 内容但未添加到 POM 模型的 POM 属性以保持与以前的 Maven 版本的兼容性: