| <!-- |
| 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 (<nolog/>) and whitelists (<log/>) specified on plugin |
| level |
| * false: logged only tracked and included by whitelists (<log/>) 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 (<nolog/>) and whitelists (<log/>) specified on |
| plugin level |
| * false: logged only tracked and included by whitelists (<log/>) on plugin level |
| <log/>]]> |
| </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> |