有效的模型构建器,具有配置文件激活、继承、插值、...
主要组件是ModelBuilder ( javadoc , source ),其DefaultModelBuilder实现 ( javadoc , source ) 用于管理步骤序列。
该序列分为2个阶段:
继承组装包括用从父模型中获取的值填充当前模型的空字段。它在InheritanceAssembler ( javadoc ) 中完成,并带有DefaultInheritanceAssembler实现 ( source )。
默认情况下,每个模型字段都按原样从父级继承,除了一些故意不继承的例外:modelVersion、artifactId、profiles(在阶段 1 中注入)和先决条件。
请注意,模型中的 5 个 URL(project.url、project.scm.connection、project.scm.developerConnection、project.scm.url和project.distributionManagement.site.url)具有特殊的继承处理:
模型插值包括用计算值替换${...} 。它在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} |