blob: 9465aa53ddea6ee898c8a25bde59a37ae82b6274 [file] [log] [blame]
<!--
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.
-->
<model xmlns="http://codehaus-plexus.github.io/MODELLO/1.4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://codehaus-plexus.github.io/MODELLO/1.4.0 http://codehaus-plexus.github.io/modello/xsd/modello-1.4.0.xsd"
xml.namespace="http://maven.apache.org/BUILD-CACHE-CONFIG/${version}"
xml.schemaLocation="https://maven.apache.org/xsd/build-cache-config-${version}.xsd">
<id>build-cache-config</id>
<name>BuildCacheConfig</name>
<description><![CDATA[Maven Incremental Build and Cache configuration, stored in <code>.mvn/maven-cache-config.xml</code>
]]></description>
<defaults>
<default>
<key>package</key>
<value>org.apache.maven.buildcache.xml.config</value>
</default>
</defaults>
<classes>
<class rootElement="true" xml.tagName="cache">
<name>CacheConfig</name>
<fields>
<field>
<name>configuration</name>
<association>
<type>Configuration</type>
</association>
<description>Configuration of main cache properties</description>
</field>
<field>
<name>input</name>
<association>
<type>Input</type>
</association>
<description>Configuration for source code input files participating in checksum calculation</description>
</field>
<field>
<name>output</name>
<association>
<type>Output</type>
</association>
<description>Configuration for output artifacts, it's needed if you want to explicitly include/exclude something from caching</description>
</field>
<field>
<name>executionControl</name>
<association>
<type>ExecutionControl</type>
</association>
<description>Execution rules for plugins in cached mode. Defines which plugins should run always</description>
</field>
</fields>
<description>Cache build metadata</description>
</class>
<class>
<name>Remote</name>
<fields>
<field>
<name>url</name>
<type>String</type>
<description>Address of remote cache</description>
</field>
<field xml.attribute="true">
<name>enabled</name>
<type>boolean</type>
<defaultValue>true</defaultValue>
</field>
<field xml.attribute="true">
<name>saveToRemote</name>
<type>boolean</type>
<defaultValue>false</defaultValue>
<description>Save output to remote cache. Recommended to enable on CI agents only.</description>
</field>
<field xml.attribute="true">
<name>transport</name>
<type>String</type>
<defaultValue>http</defaultValue>
<description>The transport to use, either 'http' or 'wagon'.</description>
</field>
<field xml.attribute="true">
<name>id</name>
<type>String</type>
<defaultValue>cache</defaultValue>
<description>The repository id used to find authentication / mirror information in maven settings, default to 'cache'.</description>
</field>
</fields>
</class>
<!--
<xs:complexType name="Configuration">
<xs:annotation>
<xs:documentation source="version">0.0.0+</xs:documentation>
</xs:annotation>
<xs:all>
<xs:element minOccurs="0" name="enabled" type="xs:boolean" default="true">
<xs:annotation>
<xs:documentation source="version">0.0.0+</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element minOccurs="0" name="hashAlgorithm" type="xs:string" default="XX">
<xs:annotation>
<xs:documentation source="version">0.0.0+</xs:documentation>
<xs:documentation source="description">One of XX, XXMM, SHA-1, SHA-256, SHA-384, SHA-512</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element minOccurs="0" name="validateXml" type="xs:boolean" default="false">
<xs:annotation>
<xs:documentation source="version">0.0.0+</xs:documentation>
<xs:documentation source="description">Validate cache config and builds metadata against xsd.
TODO: not implemented
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element minOccurs="0" name="multiModule" type="MultiModule">
<xs:annotation>
<xs:documentation source="version">0.0.0+</xs:documentation>
<xs:documentation source="description">Specifies related to multi module projects configuration.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element minOccurs="0" name="projectVersioning" type="ProjectVersioning">
<xs:annotation>
<xs:documentation source="version">0.0.0+</xs:documentation>
<xs:documentation source="description">Specifies parameters to handle project version changes.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element minOccurs="0" name="remote" type="Remote">
<xs:annotation>
<xs:documentation source="version">0.0.0+</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element minOccurs="0" name="attachedOutputs" type="AttachedOutputs">
<xs:annotation>
<xs:documentation source="version">0.0.0+</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element minOccurs="0" name="local" type="Local">
<xs:annotation>
<xs:documentation source="version">0.0.0+</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element minOccurs="0" name="debugs">
<xs:annotation>
<xs:documentation source="version">0.0.0+</xs:documentation>
<xs:documentation source="description">FileHash (causes file hash is saved in build metadata) or
EffectivePom (causes effective pom info is saved in build metadata)</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="debug" minOccurs="0" maxOccurs="unbounded" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:all>
</xs:complexType>
-->
<class>
<name>Configuration</name>
<fields>
<field>
<name>enabled</name>
<type>boolean</type>
<defaultValue>true</defaultValue>
</field>
<field>
<name>hashAlgorithm</name>
<type>String</type>
<defaultValue>XX</defaultValue>
<description>One of XX, XXMM, SHA-1, SHA-256, SHA-384, SHA-512</description>
</field>
<field>
<name>validateXml</name>
<type>boolean</type>
<defaultValue>false</defaultValue>
<description>Validate cache config and builds metadata against xsd.
TODO: not implemented
</description>
</field>
<field>
<name>multiModule</name>
<association>
<type>MultiModule</type>
</association>
<description>Specifies related to multi module projects configuration.</description>
</field>
<field>
<name>projectVersioning</name>
<association>
<type>ProjectVersioning</type>
</association>
<description>Specifies parameters to handle project version changes.</description>
</field>
<field>
<name>remote</name>
<association>
<type>Remote</type>
</association>
</field>
<field>
<name>attachedOutputs</name>
<association>
<type>AttachedOutputs</type>
</association>
</field>
<field>
<name>local</name>
<association>
<type>Local</type>
</association>
</field>
<field>
<name>debugs</name>
<association>
<type>String</type>
<multiplicity>*</multiplicity>
</association>
<description>FileHash (causes file hash is saved in build metadata) or
EffectivePom (causes effective pom info is saved in build metadata)</description>
</field>
</fields>
</class>
<!--
<xs:complexType>
<xs:choice>
<xs:element name="specificVersion" type="xs:string">
<xs:annotation>
<xs:documentation>
Any project dependency this this version will be considered cache eligible and will
be processed cache aware
</xs:documentation>
</xs:annotation>
</xs:element>
</xs:choice>
</xs:complexType>
-->
<class>
<name>MultiModule</name>
<fields>
<field>
<name>discovery</name>
<association>
<type>Discovery</type>
</association>
<description>Section to specify how to discover multi module projects.</description>
</field>
</fields>
</class>
<!--
<xs:complexType name="MultiModule">
<xs:annotation>
<xs:documentation source="version">0.0.0+</xs:documentation>
</xs:annotation>
<xs:all>
<xs:element minOccurs="0" name="discovery" type="Discovery">
<xs:annotation>
<xs:documentation source="version">0.0.0+</xs:documentation>
<xs:documentation source="description">Section to specify how to discover multi module projects.</xs:documentation>
</xs:annotation>
</xs:element>
</xs:all>
</xs:complexType>
-->
<class>
<name>Discovery</name>
<fields>
<field>
<name>scanProfiles</name>
<association>
<type>String</type>
<multiplicity>*</multiplicity>
</association>
<description>Profiles to discover multi module project</description>
</field>
</fields>
</class>
<!--
<xs:complexType name="Discovery">
<xs:annotation>
<xs:documentation source="version">0.0.0+</xs:documentation>
</xs:annotation>
<xs:all>
<xs:element minOccurs="0" name="scanProfiles">
<xs:annotation>
<xs:documentation source="version">0.0.0+</xs:documentation>
<xs:documentation source="description">Profiles to discover multi module project</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="scanProfile" minOccurs="0" maxOccurs="unbounded" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:all>
</xs:complexType>
-->
<class>
<name>ProjectVersioning</name>
<fields>
<field xml.attribute="true">
<name>adjustMetaInf</name>
<type>boolean</type>
<description>Determines whether version in metadata must be changed according to building project version.</description>
</field>
</fields>
</class>
<!--
<xs:complexType name="ProjectVersioning">
<xs:annotation>
<xs:documentation source="version">0.0.0+</xs:documentation>
</xs:annotation>
<xs:attribute name="adjustMetaInf" type="xs:boolean" default="false" use="optional">
<xs:annotation>
<xs:documentation source="version">0.0.0+</xs:documentation>
<xs:documentation source="description">Determines whether version in metadata must be changed according to building project version.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
-->
<!--
<xs:complexType>
<xs:sequence>
<xs:element name="dirName" type="xs:string" minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>
Directory name in build output directory to attach to cached artifacts
</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
-->
<class>
<name>AttachedOutputs</name>
<fields>
<field>
<name>dirNames</name>
<association>
<type>String</type>
<multiplicity>*</multiplicity>
</association>
<description>Directory name in build output directory to attach to cached artifacts</description>
</field>
</fields>
</class>
<!--
<xs:complexType>
<xs:sequence>
<xs:element name="maxBuildsCached" type="xs:positiveInteger" default="3">
<xs:annotation>
<xs:documentation>
Maximum number of cached build per artifact in local cache. First created cache (the
oldest) is
evicted if breached.
</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
-->
<class>
<name>Local</name>
<fields>
<field>
<name>maxBuildsCached</name>
<type>int</type>
<defaultValue>3</defaultValue>
<description>Maximum number of cached build per artifact in local cache. First created cache (the
oldest) is evicted if breached.</description>
</field>
</fields>
</class>
<!--
<xs:complexType name="InputType">
<xs:sequence>
<xs:element name="global" type="c:PathSetType" minOccurs="0">
<xs:annotation>
<xs:documentation>
Global input calculation rules applicable to all projects and plugins in the build
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="plugin" type="c:PluginConfigurationScanType" minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>
Plugin specific input calculation rules
</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
-->
<class>
<name>Input</name>
<fields>
<field>
<name>global</name>
<association>
<type>PathSet</type>
</association>
<description>Global input calculation rules applicable to all projects and plugins in the build</description>
</field>
<field>
<name>plugins</name>
<association>
<type>PluginConfigurationScan</type>
<multiplicity>*</multiplicity>
</association>
<description>Plugin specific input calculation rules</description>
</field>
</fields>
</class>
<!--
<xs:complexType name="PluginConfigurationScanType">
<xs:complexContent>
<xs:extension base="c:CoordinatesBaseType">
<xs:sequence>
<xs:element name="effectivePom" minOccurs="0">
<xs:annotation>
<xs:documentation>
Effective pom calculation rules
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="excludeProperty" type="xs:string" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>
Plugin configuration property should be excluded from effective pom
calculation
</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="dirScan" type="c:DirScanConfigType" minOccurs="0">
<xs:annotation>
<xs:documentation>
Specifies plugin level rules of configuration processing in search of referenced source
files
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="execution" type="c:ExecutionConfigurationScanType" minOccurs="0"
maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>
Specifies execution specific configuration processing in search of referenced source
files
</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
-->
<class>
<name>PluginConfigurationScan</name>
<superClass>CoordinatesBase</superClass>
<fields>
<field>
<name>effectivePom</name>
<association>
<type>EffectivePom</type>
</association>
<description>Effective pom calculation rules</description>
</field>
<field>
<name>dirScan</name>
<association>
<type>DirScanConfig</type>
</association>
<description>Specifies plugin level rules of configuration processing in search of referenced source files</description>
</field>
<field>
<name>executions</name>
<association>
<type>ExecutionConfigurationScan</type>
<multiplicity>*</multiplicity>
</association>
<description>Specifies execution specific configuration processing in search of referenced source files</description>
</field>
</fields>
</class>
<!--
<xs:complexType>
<xs:sequence>
<xs:element name="excludeProperty" type="xs:string" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>
Plugin configuration property should be excluded from effective pom
calculation
</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
-->
<class>
<name>EffectivePom</name>
<fields>
<field>
<name>excludeProperties</name>
<association>
<type>String</type>
<multiplicity>*</multiplicity>
</association>
<description>Plugin configuration property should be excluded from effective pom calculation</description>
</field>
</fields>
</class>
<!--
<xs:complexType name="ExecutionConfigurationScanType">
<xs:sequence>
<xs:element name="execId" maxOccurs="unbounded"/>
<xs:element name="dirScan" type="c:DirScanConfigType">
<xs:annotation>
<xs:documentation>
Specifies rules of configuration processing in search of referenced source files
</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
<xs:attribute name="ignoreParentConfig" type="xs:boolean">
<xs:annotation>
<xs:documentation>
ignore parent config or inherit/merge
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
-->
<class>
<name>ExecutionConfigurationScan</name>
<fields>
<field>
<name>execIds</name>
<association>
<type>String</type>
<multiplicity>*</multiplicity>
</association>
</field>
<field>
<name>dirScan</name>
<association>
<type>DirScanConfig</type>
</association>
<description>Specifies rules of configuration processing in search of referenced source files</description>
</field>
<field xml.attribute="true">
<name>ignoreParentConfig</name>
<type>boolean</type>
<description>ignore parent config or inherit/merge</description>
</field>
</fields>
</class>
<!--
<xs:complexType name="TagScanConfigType">
<xs:simpleContent>
<xs:extension base="c:TagNameType">
<xs:attributeGroup ref="c:pathScanAttrGroup"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
-->
<class>
<name>TagScanConfig</name>
<superClass>TagExclude</superClass>
<fields>
<field xml.attribute="true">
<name>recursive</name>
<type>boolean</type>
<defaultValue>true</defaultValue>
</field>
<field xml.attribute="true">
<name>glob</name>
<type>String</type>
<defaultValue>*</defaultValue>
</field>
</fields>
</class>
<!--
<xs:complexType name="DirScanConfigType">
<xs:choice>
<xs:element name="include" maxOccurs="unbounded" type="c:TagScanConfigType">
<xs:annotation>
<xs:documentation>
Forces cache to treat property value as input and include in calculation. If set, only included
properties will be takein in calculation (whitelist)
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:sequence>
<xs:element name="exclude" type="c:TagNameType" minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>
Tag to exclude when scanning plugin configuration for input files (blacklist)
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="tagScanConfig" type="c:TagScanConfigType" minOccurs="0"
maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>
Additional processing rules for non-blacklisted tags
</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:choice>
<xs:attribute name="ignoreParent" type="xs:boolean" default="false">
<xs:annotation>
<xs:documentation>
Ignore parent settings or inherit and merge
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="mode">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="auto">
<xs:annotation>
<xs:documentation>
Scan directory accordingly to cache implementation
</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="skip">
<xs:annotation>
<xs:documentation>
Skip directory
</xs:documentation>
</xs:annotation>
</xs:enumeration>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
-->
<class>
<name>DirScanConfig</name>
<fields>
<field>
<name>includes</name>
<association>
<type>TagScanConfig</type>
<multiplicity>*</multiplicity>
</association>
<description>Forces cache to treat property value as input and include in calculation. If set, only included
properties will be takein in calculation (whitelist)</description>
</field>
<field>
<name>excludes</name>
<association>
<type>TagExclude</type>
<multiplicity>*</multiplicity>
</association>
<description>Tag to exclude when scanning plugin configuration for input files (blacklist)</description>
</field>
<field>
<name>tagScanConfigs</name>
<association>
<type>TagScanConfig</type>
<multiplicity>*</multiplicity>
</association>
<description>Additional processing rules for non-blacklisted tags</description>
</field>
<field xml.attribute="true">
<name>ignoreParent</name>
<type>boolean</type>
<defaultValue>false</defaultValue>
<description>Ignore parent settings or inherit and merge</description>
</field>
<field xml.attribute="true">
<name>mode</name>
<type>String</type>
<description>
Either 'auto' (scan directory accordingly to cache implementation) or 'skip' (skip directory).
</description>
</field>
</fields>
</class>
<!--
<xs:complexType name="OutputType">
<xs:sequence>
<xs:element name="exclude" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:documentation>
Patterns to exclude output artifacts applicable to all projects in the build
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="pattern" type="xs:string" minOccurs="1" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
-->
<class>
<name>Output</name>
<fields>
<field>
<name>exclude</name>
<association>
<type>OutputExclude</type>
</association>
<description>Patterns to exclude output artifacts applicable to all projects in the build</description>
</field>
</fields>
</class>
<class>
<name>OutputExclude</name>
<fields>
<field>
<name>patterns</name>
<association>
<type>String</type>
<multiplicity>*</multiplicity>
</association>
</field>
</fields>
</class>
<!--
<xs:complexType name="PathSetType">
<xs:sequence>
<xs:element name="glob" type="xs:string" minOccurs="0" default="*"/>
<xs:element name="include" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attributeGroup ref="c:pathScanAttrGroup"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="exclude" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
-->
<class>
<name>PathSet</name>
<fields>
<field>
<name>glob</name>
<type>String</type>
<defaultValue>*</defaultValue>
</field>
<field>
<name>includes</name>
<association>
<type>Include</type>
<multiplicity>*</multiplicity>
</association>
</field>
<field>
<name>excludes</name>
<association>
<type>Exclude</type>
<multiplicity>*</multiplicity>
</association>
</field>
</fields>
</class>
<class>
<name>Exclude</name>
<fields>
<field xml.content="true">
<name>value</name>
<type>String</type>
</field>
</fields>
</class>
<class>
<name>Include</name>
<fields>
<field xml.content="true">
<name>value</name>
<type>String</type>
</field>
<field xml.attribute="true">
<name>recursive</name>
<type>boolean</type>
<defaultValue>true</defaultValue>
</field>
<field xml.attribute="true">
<name>glob</name>
<type>String</type>
</field>
</fields>
</class>
<!--
<xx xs:complexType name="ReconciliationType">
<xs:sequence>
<xs:element name="plugin" type="c:GoalsReconciliationType" minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>
Plugin specific reconciliation rules between cached build and running one
</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType xx>
-->
<!--
<xs:complexType name="GoalReconciliationType">
<xs:complexContent>
<xs:extension base="c:GoalIdType">
<xs:sequence>
<xs:element name="reconcile" type="c:TrackedPropertyType" minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>
Specify property which should be reconciled against running build
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="log" type="c:PropertyNameType" minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>
Specify property which should be logged to build metadata for exploration
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="nolog" type="c:PropertyNameType" minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>
Specify property which should not be logged
</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
<xs:attribute name="logAll" type="xs:boolean" default="true">
<xs:annotation>
<xs:documentation>
Controls if all plugin properties to be logged (true is default). All the properties logged
with respect to log/nolog children:
* true: logged all if no blacklists (<nolog/>) and whitelists (<log/>) specified on plugin
level
* false: logged only tracked and included by whitelists (<log/>) on plugin level
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
-->
<class>
<name>GoalReconciliation</name>
<superClass>GoalId</superClass>
<fields>
<field>
<name>reconciles</name>
<association>
<type>TrackedProperty</type>
<multiplicity>*</multiplicity>
</association>
</field>
<field>
<name>logs</name>
<association>
<type>PropertyName</type>
<multiplicity>*</multiplicity>
</association>
<description>Specify property which should be logged to build metadata for exploration</description>
</field>
<field>
<name>nologs</name>
<association>
<type>PropertyName</type>
<multiplicity>*</multiplicity>
</association>
<description>Specify property which should not be logged</description>
</field>
<field>
<name>logAll</name>
<type>boolean</type>
<defaultValue>true</defaultValue>
<description><![CDATA[Controls if all plugin properties to be logged (true is default). All the properties logged
with respect to log/nolog children:
* true: logged all if no blacklists (&lt;nolog/&gt;) and whitelists (&lt;log/&gt;) specified on plugin
level
* false: logged only tracked and included by whitelists (&lt;log/&gt;) on plugin level]]>
</description>
</field>
</fields>
</class>
<!--
<xs:complexType name="ExecutionControlType">
<xs:all>
<xs:element name="runAlways" type="c:ExecutablesType" minOccurs="0">
<xs:annotation>
<xs:documentation>
Specify which plugin should run always if present in build regardless of cached status
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="ignoreMissing" type="c:ExecutablesType" minOccurs="0">
<xs:annotation>
<xs:documentation>
Specify which executions/plugins/goals do not affect generated artifacts and do not affect build correctness.
If cached build lacks of ignorable executions only, it still could be reused.
Typically case is then cached build is produced with 'verify' and you locally you run 'install'.
Strictly speaking these are different builds but in most of cases you want this difference to be ignored
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="reconcile" minOccurs="0">
<xs:annotation>
<xs:documentation>
Specify which plugin should run always if present in build regardless of cached status
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="plugin" type="c:GoalReconciliationType" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>
Reconciliation rules for plugin properties which might be affected by command line
flags, etc
</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
<xs:attribute name="logAllProperties" type="xs:boolean" default="true">
<xs:annotation>
<xs:documentation>
Controls if all plugin properties to be logged (true is default). All the properties
logged with respect to children:
* logAll on plugin level overrides global value
* true: logged all if no blacklists (<nolog/>) and whitelists (<log/>) specified on
plugin level
* false: logged only tracked and included by whitelists (<log/>) on plugin level
<log/>
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:all>
</xs:complexType>
-->
<class>
<name>ExecutionControl</name>
<fields>
<field>
<name>runAlways</name>
<association>
<type>Executables</type>
</association>
<description>Specify which plugin should run always if present in build regardless of cached status</description>
</field>
<field>
<name>ignoreMissing</name>
<association>
<type>Executables</type>
</association>
<description>
Specify which executions/plugins/goals do not affect generated artifacts and do not affect build correctness.
If cached build lacks of ignorable executions only, it still could be reused.
Typically case is then cached build is produced with 'verify' and you locally you run 'install'.
Strictly speaking these are different builds but in most of cases you want this difference to be ignored
</description>
</field>
<field>
<name>reconcile</name>
<association>
<type>Reconcile</type>
</association>
<description>Specify which plugin should run always if present in build regardless of cached status</description>
</field>
</fields>
</class>
<!--
<xs:complexType>
<xs:sequence>
<xs:element name="plugin" type="c:GoalReconciliationType" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>
Reconciliation rules for plugin properties which might be affected by command line
flags, etc
</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
<xs:attribute name="logAllProperties" type="xs:boolean" default="true">
<xs:annotation>
<xs:documentation>
Controls if all plugin properties to be logged (true is default). All the properties
logged with respect to children:
* logAll on plugin level overrides global value
* true: logged all if no blacklists (<nolog/>) and whitelists (<log/>) specified on
plugin level
* false: logged only tracked and included by whitelists (<log/>) on plugin level
<log/>
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
-->
<class>
<name>Reconcile</name>
<fields>
<field>
<name>plugins</name>
<association>
<type>GoalReconciliation</type>
<multiplicity>*</multiplicity>
</association>
<description>Reconciliation rules for plugin properties which might be affected by command line flags, etc</description>
</field>
<field xml.attribute="true">
<name>logAllProperties</name>
<type>boolean</type>
<defaultValue>true</defaultValue>
<description><![CDATA[
Controls if all plugin properties to be logged (true is default). All the properties
logged with respect to children:
* logAll on plugin level overrides global value
* true: logged all if no blacklists (&lt;nolog/&gt;) and whitelists (&lt;log/&gt;) specified on
plugin level
* false: logged only tracked and included by whitelists (&lt;log/&gt;) on plugin level
&lt;log/&gt;]]>
</description>
</field>
</fields>
</class>
<!--
<xs:complexType name="ExecutablesType">
<xs:sequence>
<xs:element name="plugin" type="c:PluginSetType" minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>
Specify which plugin should run always if present in build regardless of cached status
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="execution" type="c:ExecutionIdsListType" minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>
Specify which executions should run always if present in build regardless of cached status
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="goals" type="c:GoalsListType" minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>
Specify which goals should run always if present in build regardless of cached status
</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
-->
<class>
<name>Executables</name>
<fields>
<field>
<name>plugins</name>
<association>
<type>PluginSet</type>
<multiplicity>*</multiplicity>
</association>
<description>Specify which executions should run always if present in build regardless of cached status</description>
</field>
<field>
<name>executions</name>
<association>
<type>ExecutionIdsList</type>
<multiplicity>*</multiplicity>
</association>
<description>Specify which executions should run always if present in build regardless of cached status</description>
</field>
<field>
<name>goalsLists</name>
<association>
<type>GoalsList</type>
<multiplicity>*</multiplicity>
</association>
<description>Specify which goals should run always if present in build regardless of cached status</description>
</field>
</fields>
</class>
<!--
<xs:complexType name="GoalsListType">
<xs:complexContent>
<xs:extension base="c:CoordinatesBaseType">
<xs:sequence>
<xs:element name="goal" type="xs:string" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>
Goals identification
</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
-->
<class>
<name>GoalsList</name>
<superClass>CoordinatesBase</superClass>
<fields>
<field>
<name>goals</name>
<association>
<type>String</type>
<multiplicity>*</multiplicity>
</association>
<description>Goals identification</description>
</field>
</fields>
</class>
<!--
<xs:complexType name="GoalIdType">
<xs:complexContent>
<xs:extension base="c:CoordinatesBaseType">
<xs:attribute name="goal" type="xs:string" use="required"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
-->
<class>
<name>GoalId</name>
<superClass>CoordinatesBase</superClass>
<fields>
<field xml.attribute="true">
<name>goal</name>
<type>String</type>
<required>true</required>
</field>
</fields>
</class>
<!--
<xs:complexType name="ExecutionIdsListType">
<xs:complexContent>
<xs:extension base="c:CoordinatesBaseType">
<xs:sequence>
<xs:element name="execId" type="xs:string" minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>
Executions ids list with plugin identifier
</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
-->
<class>
<name>ExecutionIdsList</name>
<superClass>CoordinatesBase</superClass>
<fields>
<field>
<name>execIds</name>
<association>
<type>String</type>
<multiplicity>*</multiplicity>
</association>
<description>Executions ids list with plugin identifier</description>
</field>
</fields>
</class>
<!--
<xs:complexType name="PluginSetType">
<xs:complexContent>
<xs:extension base="c:CoordinatesBaseType"/>
</xs:complexContent>
</xs:complexType>
-->
<class>
<name>PluginSet</name>
<superClass>CoordinatesBase</superClass>
</class>
<!--
<xs:complexType name="CoordinatesBaseType">
<xs:attribute name="groupId" type="xs:string"/>
<xs:attribute name="artifactId" type="xs:string" use="required"/>
</xs:complexType>
-->
<class>
<name>CoordinatesBase</name>
<fields>
<field xml.attribute="true">
<name>groupId</name>
<type>String</type>
</field>
<field xml.attribute="true">
<name>artifactId</name>
<type>String</type>
</field>
</fields>
</class>
<!--
<xs:complexType name="TagNameType">
<xs:simpleContent>
<xs:extension base="c:EmptyString">
<xs:attribute name="tagName" type="xs:string" use="required"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
-->
<class>
<name>TagExclude</name>
<fields>
<field xml.attribute="true">
<name>tagName</name>
<type>String</type>
<required>true</required>
</field>
</fields>
</class>
<!--
<xs:complexType name="PropertyNameType">
<xs:simpleContent>
<xs:extension base="c:EmptyString">
<xs:attribute name="propertyName" type="xs:string" use="required"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
-->
<class>
<name>PropertyName</name>
<fields>
<field xml.content="true">
<name>value</name>
<type>String</type>
</field>
<field xml.attribute="true">
<name>propertyName</name>
<type>String</type>
</field>
</fields>
</class>
<!--
<xs:simpleType name="EmptyString">
<xs:restriction base="xs:string">
<xs:maxLength value="0"/>
</xs:restriction>
</xs:simpleType>
<xs:complexType name="TrackedPropertyType">
<xs:simpleContent>
<xs:extension base="c:PropertyNameType">
<xs:attribute name="skipValue" type="xs:string">
<xs:annotation>
<xs:documentation>
Specify which value denotes skipped execution in plugin config.
If active build skips execution (property set to skipValue) cache will allow such
discrepancy.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="defaultValue" type="xs:string">
<xs:annotation>
<xs:documentation>
Manual value for reconciliation. Required to reconcile runtime only properties
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
-->
<class>
<name>TrackedProperty</name>
<fields>
<field xml.content="true">
<name>value</name>
<type>String</type>
</field>
<field xml.attribute="true">
<name>propertyName</name>
<type>String</type>
</field>
<field xml.attribute="true">
<name>skipValue</name>
<type>String</type>
</field>
<field xml.attribute="true">
<name>defaultValue</name>
<type>String</type>
</field>
</fields>
</class>
</classes>
<!--
<xs:attributeGroup name="pathScanAttrGroup">
<xs:annotation>
<xs:documentation>
Common attributes for scanning paths
</xs:documentation>
</xs:annotation>
<xs:attribute name="recursive" type="xs:boolean" default="true">
<xs:annotation>
<xs:documentation>
Should walk directory specified in property recursively or not
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="glob" type="xs:string" default="*">
<xs:annotation>
<xs:documentation>
Glob to apply when scanning dir denoted by this property
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:attributeGroup>
-->
</model>