diff options
Diffstat (limited to 'framework/src/maven/apache-maven-3.3.3/maven-model-builder/src/site/apt/index.apt')
-rw-r--r-- | framework/src/maven/apache-maven-3.3.3/maven-model-builder/src/site/apt/index.apt | 187 |
1 files changed, 187 insertions, 0 deletions
diff --git a/framework/src/maven/apache-maven-3.3.3/maven-model-builder/src/site/apt/index.apt b/framework/src/maven/apache-maven-3.3.3/maven-model-builder/src/site/apt/index.apt new file mode 100644 index 00000000..64cb805c --- /dev/null +++ b/framework/src/maven/apache-maven-3.3.3/maven-model-builder/src/site/apt/index.apt @@ -0,0 +1,187 @@ +~~ Licensed to the Apache Software Foundation (ASF) under one +~~ or more contributor license agreements. See the NOTICE file +~~ distributed with this work for additional information +~~ regarding copyright ownership. The ASF licenses this file +~~ to you under the Apache License, Version 2.0 (the +~~ "License"); you may not use this file except in compliance +~~ with the License. You may obtain a copy of the License at +~~ +~~ http://www.apache.org/licenses/LICENSE-2.0 +~~ +~~ Unless required by applicable law or agreed to in writing, +~~ software distributed under the License is distributed on an +~~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +~~ KIND, either express or implied. See the License for the +~~ specific language governing permissions and limitations +~~ under the License. + + ----- + Introduction + ----- + Hervé Boutemy + ----- + 2013-03-19 + ----- + +Maven Model Builder + + The effective model builder, with profile activation, inheritance, interpolation, ... + + The main component is <<<ModelBuilder>>> + ({{{./apidocs/org/apache/maven/model/building/ModelBuilder.html}javadoc}}, + {{{./xref/org/apache/maven/model/building/ModelBuilder.html}source}}), + with its <<<DefaultModelBuilder>>> implementation + ({{{./apidocs/org/apache/maven/model/building/DefaultModelBuilder.html}javadoc}}, + {{{./xref/org/apache/maven/model/building/DefaultModelBuilder.html}source}}) + that manages the steps sequence. + + The sequence is divided into 2 phases: + + * phase 1 + + ** profile activation: see {{{./apidocs/org/apache/maven/model/profile/activation/package-summary.html}available activators}}. + Notice that model interpolation hasn't happened yet, then interpolation for file-based activation is limited to + <<<$\{basedir}>>> (since Maven 3), System properties and request properties + + ** raw model validation: <<<ModelValidator>>> ({{{./apidocs/org/apache/maven/model/validation/ModelValidator.html}javadoc}}), + with its <<<DefaultModelValidator>>> implementation + ({{{./xref/org/apache/maven/model/validation/DefaultModelValidator.html}source}}) + + ** model normalization - merge duplicates: <<<ModelNormalizer>>> ({{{./apidocs/org/apache/maven/model/normalization/ModelNormalizer.html}javadoc}}), + with its <<<DefaultModelNormalizer>>> implementation + ({{{./xref/org/apache/maven/model/normalization/DefaultModelNormalizer.html}source}}) + + ** profile injection: <<<ProfileInjector>>> ({{{./apidocs/org/apache/maven/model/profile/ProfileInjector.html}javadoc}}), + with its <<<DefaultProfileInjector>>> implementation + ({{{./xref/org/apache/maven/model/profile/DefaultProfileInjector.html}source}}) + + ** parent resolution until {{{./super-pom.html}super-pom}} + + ** inheritance assembly: <<<InheritanceAssembler>>> ({{{./apidocs/org/apache/maven/model/inheritance/InheritanceAssembler.html}javadoc}}), + with its <<<DefaultInheritanceAssembler>>> implementation + ({{{./xref/org/apache/maven/model/inheritance/DefaultInheritanceAssembler.html}source}}) + + ** model interpolation (see below) + + ** url normalization: <<<UrlNormalizer>>> ({{{./apidocs/org/apache/maven/model/path/UrlNormalizer.html}javadoc}}), + with its <<<DefaultUrlNormalizer>>> implementation + ({{{./xref/org/apache/maven/model/path/DefaultUrlNormalizer.html}source}}) + + [] + + * phase 2, with optional plugin processing + + ** model path translation: <<<ModelPathTranslator>>> ({{{./apidocs/org/apache/maven/model/path/ModelPathTranslator.html}javadoc}}), + with its <<<DefaultModelPathTranslator>>> implementation + ({{{./xref/org/apache/maven/model/path/DefaultModelPathTranslator.html}source}}) + + ** plugin management injection: <<<PluginManagementInjector>>> ({{{./apidocs/org/apache/maven/model/management/PluginManagementInjector.html}javadoc}}), + with its <<<DefaultPluginManagementInjector>>> implementation + ({{{./xref/org/apache/maven/model/management/DefaultPluginManagementInjector.html}source}}) + + ** <(optional)> lifecycle bindings injection: <<<LifecycleBindingsInjector>>> ({{{./apidocs/org/apache/maven/model/plugin/LifecycleBindingsInjector.html}javadoc}}), + with its <<<DefaultLifecycleBindingsInjector>>> implementation + ({{{./xref/org/apache/maven/model/plugin/DefaultLifecycleBindingsInjector.html}source}}) + + ** dependency management import (for dependencies of type <<<pom>>> in the <<<\<dependencyManagement\>>>> section) + + ** dependency management injection: <<<DependencyManagementInjector>>> ({{{./apidocs/org/apache/maven/model/management/DependencyManagementInjector.html}javadoc}}), + with its <<<DefaultDependencyManagementInjector>>> implementation + ({{{./xref/org/apache/maven/model/management/DefaultDependencyManagementInjector.html}source}}) + + ** model normalization - inject default values: <<<ModelNormalizer>>> ({{{./apidocs/org/apache/maven/model/normalization/ModelNormalizer.html}javadoc}}), + with its <<<DefaultModelNormalizer>>> implementation + ({{{./xref/org/apache/maven/model/normalization/DefaultModelNormalizer.html}source}}) + + ** <(optional)> reports configuration: <<<ReportConfigurationExpander>>> ({{{./apidocs/org/apache/maven/model/plugin/ReportConfigurationExpander.html}javadoc}}), + with its <<<DefaultReportConfigurationExpander>>> implementation + ({{{./xref/org/apache/maven/model/plugin/DefaultReportConfigurationExpander.html}source}}) + + ** <(optional)> reports conversion to decoupled site plugin: <<<ReportingConverter>>> ({{{./apidocs/org/apache/maven/model/plugin/ReportingConverter.html}javadoc}}), + with its <<<DefaultReportingConverter>>> implementation + ({{{./xref/org/apache/maven/model/plugin/DefaultReportingConverter.html}source}}) + + ** <(optional)> plugins configuration: <<<PluginConfigurationExpander>>> ({{{./apidocs/org/apache/maven/model/plugin/PluginConfigurationExpander.html}javadoc}}), + with its <<<DefaultPluginConfigurationExpander>>> implementation + ({{{./xref/org/apache/maven/model/plugin/DefaultPluginConfigurationExpander.html}source}}) + + ** effective model validation: <<<ModelValidator>>> ({{{./apidocs/org/apache/maven/model/validation/ModelValidator.html}javadoc}}), + with its <<<DefaultModelValidator>>> implementation + ({{{./xref/org/apache/maven/model/validation/DefaultModelValidator.html}source}}) + + [] + + [] + + +* Model Interpolation + + Model Interpolation consists in replacing <<<$\{...\}>>> with calculated value. It is done in <<<StringSearchModelInterpolator>>> + ({{{./apidocs/org/apache/maven/model/interpolation/StringSearchModelInterpolator.html}javadoc}}, + {{{./xref/org/apache/maven/model/interpolation/StringSearchModelInterpolator.html}source}}). + + Notice that model interpolation happens <after> profile activation, then profile activation doesn't benefit from every values: + interpolation for file-based activation is limited to <<<$\{basedir}>>> (which was introduced in Maven 3 and is not deprecated + in this context), System properties and request properties. + + Values are evaluated in sequence from different syntaxes: + +*----+------+------+ +|| value || evaluation result || common examples || +*----+------+------+ +| <<<project.*>>>\ +<<<pom.*>>> (<deprecated>)\ +<<<*>>> (<deprecated>) | POM content (see {{{../maven-model/maven.html}POM reference}}) | <<<$\{project.version\}>>>\ + | | <<<$\{project.build.finalName\}>>>\ + | | <<<$\{project.artifactId\}>>>\ + | | <<<$\{project.build.directory\}>>> | +*----+------+------+ +| <<<project.basedir>>>\ +<<<pom.basedir>>> (<deprecated>)\ +<<<basedir>>> (<deprecated>) | the directory containing the <<<pom.xml>>> file | <<<$\{project.basedir\}>>> | +*----+------+------+ +| <<<project.baseUri>>>\ +<<<pom.baseUri>>> (<deprecated>) | the directory containing the <<<pom.xml>>> file as URI | <<<$\{project.baseUri\}>>> | +*----+------+------+ +| <<<build.timestamp>>>\ +<<<maven.build.timestamp>>> | the UTC timestamp of build start, in <<<yyyy-MM-dd'T'HH:mm:ss'Z'>>> default format, which can be overridden with <<<maven.build.timestamp.format>>> POM property | <<<$\{maven.build.timestamp\}>>> | +*----+------+------+ +| <<<*>>> | user properties, set from CLI with <<<-Dproperty=value>>> | <<<$\{skipTests\}>>> | +*----+------+------+ +| <<<*>>> | model properties, such as project properties set in the pom | <<<$\{any.key\}>>> | +*----+------+------+ +| <<<maven.home>>> | The path to the current Maven home. | <<<$\{maven.home\}>>> | +*----+------+------+ +| <<<maven.version>>> | The version number of the current Maven execution <(since 3.0.4)>. For example, "<<<3.0.5>>>". | <<<$\{maven.version\}>>> | +*----+------+------+ +| <<<maven.build.version>>> | The full build version of the current Maven execution <(since 3.0.4)>. For example, "<<<Apache Maven 3.2.2 (r01de14724cdef164cd33c7c8c2fe155faf9602da; 2013-02-19T14:51:28+01:00)>>>". | <<<$\{maven.build.version\}>>> | +*----+------+------+ +| <<<*>>> | Java system properties (see {{{http://download.oracle.com/javase/6/docs/api/java/lang/System.html#getProperties()}JDK reference}}) | <<<$\{user.home\}>>>\ + | | <<<$\{java.home\}>>> | +*----+------+------+ +| <<<env.*>>>\ +<<<*>>> | environment variables | <<<$\{env.PATH\}>>> | +*----+------+------+ +| <<<settings.*>>> | Local user settings (see {{{../maven-settings/settings.xml/settings.html}settings reference}}) | <<<$\{settings.localRepository\}>>> | +*----+------+------+ + +** Notice + + * after model interpolation, <<<$\{...\}>>> content can remain in the model that will be evaluated later + when setting plugin parameters. This happens in particular with <<<settings.*>>> values for + {{{../maven-settings/settings.html}Settings Model}}, + + * encoding configuration have been defined as POM properties looking like POM content but not added to POM model to maintain + compatibility with previous Maven versions: + + * <<<$\{project.build.sourceEncoding\}>>> for + {{{http://docs.codehaus.org/display/MAVENUSER/POM+Element+for+Source+File+Encoding}source files encoding}} + (defaults to platform encoding) + + * <<<$\{project.reporting.outputEncoding\}>>> for + {{{https://cwiki.apache.org/confluence/display/MAVENOLD/Reporting+Encoding+Configuration}reporting output files encoding}} + (defaults to <<<UTF-8>>>) + + [] + + [] |