You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by gn...@apache.org on 2022/11/30 20:23:36 UTC

[maven-site] branch master updated: [MNGSITE-499] Publish build-cache-extension schemas (#340)

This is an automated email from the ASF dual-hosted git repository.

gnodet pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/maven-site.git


The following commit(s) were added to refs/heads/master by this push:
     new c0b33e46 [MNGSITE-499] Publish build-cache-extension schemas (#340)
c0b33e46 is described below

commit c0b33e46bcab1f96d0b875b0c56c8fe33af2cc2d
Author: Guillaume Nodet <gn...@gmail.com>
AuthorDate: Wed Nov 30 21:23:32 2022 +0100

    [MNGSITE-499] Publish build-cache-extension schemas (#340)
---
 content/resources/xsd/build-cache-build-1.0.0.xsd  | 293 ++++++++
 content/resources/xsd/build-cache-config-1.0.0.xsd | 808 +++++++++++++++++++++
 content/resources/xsd/build-cache-diff-1.0.0.xsd   | 100 +++
 content/resources/xsd/build-cache-report-1.0.0.xsd | 100 +++
 4 files changed, 1301 insertions(+)

diff --git a/content/resources/xsd/build-cache-build-1.0.0.xsd b/content/resources/xsd/build-cache-build-1.0.0.xsd
new file mode 100644
index 00000000..34800e70
--- /dev/null
+++ b/content/resources/xsd/build-cache-build-1.0.0.xsd
@@ -0,0 +1,293 @@
+<?xml version="1.0"?>
+<!--
+
+  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.
+-->
+<!-- =================== DO NOT EDIT THIS FILE ====================         -->
+<!-- Generated by Modello 2.0.0,                                            -->
+<!-- any modifications will be overwritten.                                 -->
+<!-- ==============================================================         -->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" xmlns="http://maven.apache.org/BUILD-CACHE-BUILD/1.0.0" targetNamespace="http://maven.apache.org/BUILD-CACHE-BUILD/1.0.0">
+  <xs:element name="build" type="Build">
+    <xs:annotation>
+      <xs:documentation source="version">1.0.0+</xs:documentation>
+      <xs:documentation source="description"></xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:complexType name="Build">
+    <xs:annotation>
+      <xs:documentation source="version">1.0.0+</xs:documentation>
+      <xs:documentation source="description"></xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element minOccurs="0" name="cacheImplementationVersion" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">1.0.0+</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="final" type="xs:boolean">
+        <xs:annotation>
+          <xs:documentation source="version">1.0.0+</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="hashFunction" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">1.0.0+</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="buildTime" type="xs:dateTime">
+        <xs:annotation>
+          <xs:documentation source="version">1.0.0+</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="buildServer" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">1.0.0+</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="scm" type="Scm">
+        <xs:annotation>
+          <xs:documentation source="version">1.0.0+</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="goals">
+        <xs:annotation>
+          <xs:documentation source="version">1.0.0+</xs:documentation>
+          <xs:documentation source="description"></xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element name="goal" minOccurs="0" maxOccurs="unbounded" type="xs:string"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element minOccurs="0" name="artifact" type="Artifact">
+        <xs:annotation>
+          <xs:documentation source="version">1.0.0+</xs:documentation>
+          <xs:documentation source="description"></xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="attachedArtifacts">
+        <xs:annotation>
+          <xs:documentation source="version">0.0.0+</xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element name="attachedArtifact" minOccurs="0" maxOccurs="unbounded" type="Artifact"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element minOccurs="0" name="executions">
+        <xs:annotation>
+          <xs:documentation source="version">0.0.0+</xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element name="execution" minOccurs="0" maxOccurs="unbounded" type="CompletedExecution"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element minOccurs="0" name="projectsInputInfo" type="ProjectsInputInfo">
+        <xs:annotation>
+          <xs:documentation source="version">0.0.0+</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="Scm">
+    <xs:annotation>
+      <xs:documentation source="version">0.0.0+</xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element minOccurs="0" name="sourceBranch" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">0.0.0+</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="revision" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">0.0.0+</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="Artifact">
+    <xs:annotation>
+      <xs:documentation source="version">0.0.0+</xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element minOccurs="0" name="groupId" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">0.0.0+</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="artifactId" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">0.0.0+</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="version" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">0.0.0+</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="classifier" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">0.0.0+</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="type" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">0.0.0+</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="scope" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">0.0.0+</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="fileName" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">0.0.0+</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="fileHash" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">0.0.0+</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="fileSize" type="xs:long" default="0">
+        <xs:annotation>
+          <xs:documentation source="version">0.0.0+</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="ProjectsInputInfo">
+    <xs:annotation>
+      <xs:documentation source="version">0.0.0+</xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element minOccurs="0" name="checksum" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">0.0.0+</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="items">
+        <xs:annotation>
+          <xs:documentation source="version">0.0.0+</xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element name="item" minOccurs="0" maxOccurs="unbounded" type="DigestItem"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="DigestItem">
+    <xs:simpleContent>
+      <xs:extension base="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">0.0.0+</xs:documentation>
+        </xs:annotation>
+        <xs:attribute name="type" type="xs:string" use="optional">
+          <xs:annotation>
+            <xs:documentation source="version">0.0.0+</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="hash" type="xs:string" use="optional">
+          <xs:annotation>
+            <xs:documentation source="version">0.0.0+</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="fileChecksum" type="xs:string" use="optional">
+          <xs:annotation>
+            <xs:documentation source="version">0.0.0+</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="content" type="xs:string" use="optional">
+          <xs:annotation>
+            <xs:documentation source="version">0.0.0+</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="isText" type="xs:string" use="optional">
+          <xs:annotation>
+            <xs:documentation source="version">0.0.0+</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="charset" type="xs:string" use="optional">
+          <xs:annotation>
+            <xs:documentation source="version">0.0.0+</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="eol" type="xs:string" use="optional">
+          <xs:annotation>
+            <xs:documentation source="version">0.0.0+</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+      </xs:extension>
+    </xs:simpleContent>
+  </xs:complexType>
+  <xs:complexType name="CompletedExecution">
+    <xs:annotation>
+      <xs:documentation source="version">0.0.0+</xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element minOccurs="0" name="executionKey" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">0.0.0+</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="mojoClassName" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">0.0.0+</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="properties">
+        <xs:annotation>
+          <xs:documentation source="version">0.0.0+</xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element name="property" minOccurs="0" maxOccurs="unbounded" type="PropertyValue"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="PropertyValue">
+    <xs:simpleContent>
+      <xs:extension base="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">0.0.0+</xs:documentation>
+        </xs:annotation>
+        <xs:attribute name="name" type="xs:string" use="optional">
+          <xs:annotation>
+            <xs:documentation source="version">0.0.0+</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="tracked" type="xs:boolean" use="optional">
+          <xs:annotation>
+            <xs:documentation source="version">0.0.0+</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+      </xs:extension>
+    </xs:simpleContent>
+  </xs:complexType>
+</xs:schema>
\ No newline at end of file
diff --git a/content/resources/xsd/build-cache-config-1.0.0.xsd b/content/resources/xsd/build-cache-config-1.0.0.xsd
new file mode 100644
index 00000000..5dcfac29
--- /dev/null
+++ b/content/resources/xsd/build-cache-config-1.0.0.xsd
@@ -0,0 +1,808 @@
+<?xml version="1.0"?>
+<!--
+
+  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.
+-->
+<!-- =================== DO NOT EDIT THIS FILE ====================         -->
+<!-- Generated by Modello 2.0.0,                                            -->
+<!-- any modifications will be overwritten.                                 -->
+<!-- ==============================================================         -->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" xmlns="http://maven.apache.org/BUILD-CACHE-CONFIG/1.0.0" targetNamespace="http://maven.apache.org/BUILD-CACHE-CONFIG/1.0.0">
+  <xs:element name="cache" type="CacheConfig">
+    <xs:annotation>
+      <xs:documentation source="version">0.0.0+</xs:documentation>
+      <xs:documentation source="description">Cache build metadata</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:complexType name="CacheConfig">
+    <xs:annotation>
+      <xs:documentation source="version">0.0.0+</xs:documentation>
+      <xs:documentation source="description">Cache build metadata</xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element minOccurs="0" name="configuration" type="Configuration">
+        <xs:annotation>
+          <xs:documentation source="version">0.0.0+</xs:documentation>
+          <xs:documentation source="description">Configuration of main cache properties</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="input" type="Input">
+        <xs:annotation>
+          <xs:documentation source="version">0.0.0+</xs:documentation>
+          <xs:documentation source="description">Configuration for source code input files participating in checksum calculation</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="output" type="Output">
+        <xs:annotation>
+          <xs:documentation source="version">0.0.0+</xs:documentation>
+          <xs:documentation source="description">Configuration for output artifacts, it&apos;s needed if you want to explicitly include/exclude something from caching</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="executionControl" type="ExecutionControl">
+        <xs:annotation>
+          <xs:documentation source="version">0.0.0+</xs:documentation>
+          <xs:documentation source="description">Execution rules for plugins in cached mode. Defines which plugins should run always</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="Input">
+    <xs:annotation>
+      <xs:documentation source="version">0.0.0+</xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element minOccurs="0" name="global" type="PathSet">
+        <xs:annotation>
+          <xs:documentation source="version">0.0.0+</xs:documentation>
+          <xs:documentation source="description">Global input calculation rules applicable to all projects and plugins in the build</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="plugins">
+        <xs:annotation>
+          <xs:documentation source="version">0.0.0+</xs:documentation>
+          <xs:documentation source="description">Plugin specific input calculation rules</xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element name="plugin" minOccurs="0" maxOccurs="unbounded" type="PluginConfigurationScan"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="PluginConfigurationScan">
+    <xs:annotation>
+      <xs:documentation source="version">0.0.0+</xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element minOccurs="0" name="effectivePom" type="EffectivePom">
+        <xs:annotation>
+          <xs:documentation source="version">0.0.0+</xs:documentation>
+          <xs:documentation source="description">Effective pom calculation rules</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="dirScan" type="DirScanConfig">
+        <xs:annotation>
+          <xs:documentation source="version">0.0.0+</xs:documentation>
+          <xs:documentation source="description">Specifies plugin level rules of configuration processing in search of referenced source files</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="executions">
+        <xs:annotation>
+          <xs:documentation source="version">0.0.0+</xs:documentation>
+          <xs:documentation source="description">Specifies execution specific configuration processing in search of referenced source files</xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element name="execution" minOccurs="0" maxOccurs="unbounded" type="ExecutionConfigurationScan"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+    </xs:all>
+    <xs:attribute name="groupId" type="xs:string" use="optional">
+      <xs:annotation>
+        <xs:documentation source="version">0.0.0+</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+    <xs:attribute name="artifactId" type="xs:string" use="optional">
+      <xs:annotation>
+        <xs:documentation source="version">0.0.0+</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+  </xs:complexType>
+  <xs:complexType name="EffectivePom">
+    <xs:annotation>
+      <xs:documentation source="version">0.0.0+</xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element minOccurs="0" name="excludeProperties">
+        <xs:annotation>
+          <xs:documentation source="version">0.0.0+</xs:documentation>
+          <xs:documentation source="description">Plugin configuration property should be excluded from effective pom calculation</xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element name="excludeProperty" minOccurs="0" maxOccurs="unbounded" type="xs:string"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="ExecutionConfigurationScan">
+    <xs:annotation>
+      <xs:documentation source="version">0.0.0+</xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element minOccurs="0" name="execIds">
+        <xs:annotation>
+          <xs:documentation source="version">0.0.0+</xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element name="execId" minOccurs="0" maxOccurs="unbounded" type="xs:string"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element minOccurs="0" name="dirScan" type="DirScanConfig">
+        <xs:annotation>
+          <xs:documentation source="version">0.0.0+</xs:documentation>
+          <xs:documentation source="description">Specifies rules of configuration processing in search of referenced source files</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+    </xs:all>
+    <xs:attribute name="ignoreParentConfig" type="xs:boolean" default="false" use="optional">
+      <xs:annotation>
+        <xs:documentation source="version">0.0.0+</xs:documentation>
+        <xs:documentation source="description">ignore parent config or inherit/merge</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+  </xs:complexType>
+  <xs:complexType name="DirScanConfig">
+    <xs:annotation>
+      <xs:documentation source="version">0.0.0+</xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element minOccurs="0" name="includes">
+        <xs:annotation>
+          <xs:documentation source="version">0.0.0+</xs:documentation>
+          <xs:documentation source="description">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:complexType>
+          <xs:sequence>
+            <xs:element name="include" minOccurs="0" maxOccurs="unbounded" type="TagScanConfig"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element minOccurs="0" name="excludes">
+        <xs:annotation>
+          <xs:documentation source="version">0.0.0+</xs:documentation>
+          <xs:documentation source="description">Tag to exclude when scanning plugin configuration for input files (blacklist)</xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element name="exclude" minOccurs="0" maxOccurs="unbounded" type="TagExclude"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element minOccurs="0" name="tagScanConfigs">
+        <xs:annotation>
+          <xs:documentation source="version">0.0.0+</xs:documentation>
+          <xs:documentation source="description">Additional processing rules for non-blacklisted tags</xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element name="tagScanConfig" minOccurs="0" maxOccurs="unbounded" type="TagScanConfig"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+    </xs:all>
+    <xs:attribute name="ignoreParent" type="xs:boolean" default="false" use="optional">
+      <xs:annotation>
+        <xs:documentation source="version">0.0.0+</xs:documentation>
+        <xs:documentation source="description">Ignore parent settings or inherit and merge</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+    <xs:attribute name="mode" type="xs:string" use="optional">
+      <xs:annotation>
+        <xs:documentation source="version">0.0.0+</xs:documentation>
+        <xs:documentation source="description">
+                        Either &apos;auto&apos; (scan directory accordingly to cache implementation) or &apos;skip&apos; (skip directory).
+                    </xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+  </xs:complexType>
+  <xs:complexType name="TagScanConfig">
+    <xs:annotation>
+      <xs:documentation source="version">0.0.0+</xs:documentation>
+    </xs:annotation>
+    <xs:attribute name="recursive" type="xs:boolean" default="true" use="optional">
+      <xs:annotation>
+        <xs:documentation source="version">0.0.0+</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+    <xs:attribute name="glob" type="xs:string" default="*" use="optional">
+      <xs:annotation>
+        <xs:documentation source="version">0.0.0+</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+    <xs:attribute name="tagName" type="xs:string" use="required">
+      <xs:annotation>
+        <xs:documentation source="version">0.0.0+</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+  </xs:complexType>
+  <xs:complexType name="TagExclude">
+    <xs:annotation>
+      <xs:documentation source="version">0.0.0+</xs:documentation>
+    </xs:annotation>
+    <xs:attribute name="tagName" type="xs:string" use="required">
+      <xs:annotation>
+        <xs:documentation source="version">0.0.0+</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+  </xs:complexType>
+  <xs:complexType name="PathSet">
+    <xs:annotation>
+      <xs:documentation source="version">0.0.0+</xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element minOccurs="0" name="glob" type="xs:string" default="*">
+        <xs:annotation>
+          <xs:documentation source="version">0.0.0+</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="includes">
+        <xs:annotation>
+          <xs:documentation source="version">0.0.0+</xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element name="include" minOccurs="0" maxOccurs="unbounded" type="Include"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element minOccurs="0" name="excludes">
+        <xs:annotation>
+          <xs:documentation source="version">0.0.0+</xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element name="exclude" minOccurs="0" maxOccurs="unbounded" type="Exclude"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="Exclude">
+    <xs:simpleContent>
+      <xs:extension base="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">0.0.0+</xs:documentation>
+        </xs:annotation>
+      </xs:extension>
+    </xs:simpleContent>
+  </xs:complexType>
+  <xs:complexType name="Include">
+    <xs:simpleContent>
+      <xs:extension base="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">0.0.0+</xs:documentation>
+        </xs:annotation>
+        <xs:attribute name="recursive" type="xs:boolean" default="true" use="optional">
+          <xs:annotation>
+            <xs:documentation source="version">0.0.0+</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="glob" type="xs:string" use="optional">
+          <xs:annotation>
+            <xs:documentation source="version">0.0.0+</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+      </xs:extension>
+    </xs:simpleContent>
+  </xs:complexType>
+  <xs:complexType name="Output">
+    <xs:annotation>
+      <xs:documentation source="version">0.0.0+</xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element minOccurs="0" name="exclude" type="OutputExclude">
+        <xs:annotation>
+          <xs:documentation source="version">0.0.0+</xs:documentation>
+          <xs:documentation source="description">Patterns to exclude output artifacts applicable to all projects in the build</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="OutputExclude">
+    <xs:annotation>
+      <xs:documentation source="version">0.0.0+</xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element minOccurs="0" name="patterns">
+        <xs:annotation>
+          <xs:documentation source="version">0.0.0+</xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element name="pattern" minOccurs="0" maxOccurs="unbounded" type="xs:string"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="ExecutionControl">
+    <xs:annotation>
+      <xs:documentation source="version">0.0.0+</xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element minOccurs="0" name="runAlways" type="Executables">
+        <xs:annotation>
+          <xs:documentation source="version">0.0.0+</xs:documentation>
+          <xs:documentation source="description">Specify which plugin should run always if present in build regardless of cached status</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="ignoreMissing" type="Executables">
+        <xs:annotation>
+          <xs:documentation source="version">0.0.0+</xs:documentation>
+          <xs:documentation source="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 &apos;verify&apos; and you locally you run &apos;install&apos;.
+                        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 minOccurs="0" name="reconcile" type="Reconcile">
+        <xs:annotation>
+          <xs:documentation source="version">0.0.0+</xs:documentation>
+          <xs:documentation source="description">Specify which plugin should run always if present in build regardless of cached status</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="Executables">
+    <xs:annotation>
+      <xs:documentation source="version">0.0.0+</xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element minOccurs="0" name="plugins">
+        <xs:annotation>
+          <xs:documentation source="version">0.0.0+</xs:documentation>
+          <xs:documentation source="description">Specify which executions should run always if present in build regardless of cached status</xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element name="plugin" minOccurs="0" maxOccurs="unbounded" type="PluginSet"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element minOccurs="0" name="executions">
+        <xs:annotation>
+          <xs:documentation source="version">0.0.0+</xs:documentation>
+          <xs:documentation source="description">Specify which executions should run always if present in build regardless of cached status</xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element name="execution" minOccurs="0" maxOccurs="unbounded" type="ExecutionIdsList"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element minOccurs="0" name="goalsLists">
+        <xs:annotation>
+          <xs:documentation source="version">0.0.0+</xs:documentation>
+          <xs:documentation source="description">Specify which goals should run always if present in build regardless of cached status</xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element name="goalsList" minOccurs="0" maxOccurs="unbounded" type="GoalsList"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="GoalsList">
+    <xs:annotation>
+      <xs:documentation source="version">0.0.0+</xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element minOccurs="0" name="goals">
+        <xs:annotation>
+          <xs:documentation source="version">0.0.0+</xs:documentation>
+          <xs:documentation source="description">Goals identification</xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element name="goal" minOccurs="0" maxOccurs="unbounded" type="xs:string"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+    </xs:all>
+    <xs:attribute name="groupId" type="xs:string" use="optional">
+      <xs:annotation>
+        <xs:documentation source="version">0.0.0+</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+    <xs:attribute name="artifactId" type="xs:string" use="optional">
+      <xs:annotation>
+        <xs:documentation source="version">0.0.0+</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+  </xs:complexType>
+  <xs:complexType name="PluginSet">
+    <xs:annotation>
+      <xs:documentation source="version">0.0.0+</xs:documentation>
+    </xs:annotation>
+    <xs:attribute name="groupId" type="xs:string" use="optional">
+      <xs:annotation>
+        <xs:documentation source="version">0.0.0+</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+    <xs:attribute name="artifactId" type="xs:string" use="optional">
+      <xs:annotation>
+        <xs:documentation source="version">0.0.0+</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+  </xs:complexType>
+  <xs:complexType name="ExecutionIdsList">
+    <xs:annotation>
+      <xs:documentation source="version">0.0.0+</xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element minOccurs="0" name="execIds">
+        <xs:annotation>
+          <xs:documentation source="version">0.0.0+</xs:documentation>
+          <xs:documentation source="description">Executions ids list with plugin identifier</xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element name="execId" minOccurs="0" maxOccurs="unbounded" type="xs:string"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+    </xs:all>
+    <xs:attribute name="groupId" type="xs:string" use="optional">
+      <xs:annotation>
+        <xs:documentation source="version">0.0.0+</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+    <xs:attribute name="artifactId" type="xs:string" use="optional">
+      <xs:annotation>
+        <xs:documentation source="version">0.0.0+</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+  </xs:complexType>
+  <xs:complexType name="Reconcile">
+    <xs:annotation>
+      <xs:documentation source="version">0.0.0+</xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element minOccurs="0" name="plugins">
+        <xs:annotation>
+          <xs:documentation source="version">0.0.0+</xs:documentation>
+          <xs:documentation source="description">Reconciliation rules for plugin properties which might be affected by command line flags, etc</xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element name="plugin" minOccurs="0" maxOccurs="unbounded" type="GoalReconciliation"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+    </xs:all>
+    <xs:attribute name="logAllProperties" type="xs:boolean" default="true" use="optional">
+      <xs:annotation>
+        <xs:documentation source="version">0.0.0+</xs:documentation>
+        <xs:documentation source="description">
+                        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 (&amp;lt;nolog/&amp;gt;) and whitelists (&amp;lt;log/&amp;gt;) specified on
+                        plugin level
+                        * false: logged only tracked and included by whitelists (&amp;lt;log/&amp;gt;) on plugin level
+                        &amp;lt;log/&amp;gt;
+                    </xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+  </xs:complexType>
+  <xs:complexType name="GoalReconciliation">
+    <xs:annotation>
+      <xs:documentation source="version">0.0.0+</xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element minOccurs="0" name="reconciles">
+        <xs:annotation>
+          <xs:documentation source="version">0.0.0+</xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element name="reconcile" minOccurs="0" maxOccurs="unbounded" type="TrackedProperty"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element minOccurs="0" name="logs">
+        <xs:annotation>
+          <xs:documentation source="version">0.0.0+</xs:documentation>
+          <xs:documentation source="description">Specify property which should be logged to build metadata for exploration</xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element name="log" minOccurs="0" maxOccurs="unbounded" type="PropertyName"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element minOccurs="0" name="nologs">
+        <xs:annotation>
+          <xs:documentation source="version">0.0.0+</xs:documentation>
+          <xs:documentation source="description">Specify property which should not be logged</xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element name="nolog" minOccurs="0" maxOccurs="unbounded" type="PropertyName"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element minOccurs="0" name="logAll" type="xs:boolean" default="true">
+        <xs:annotation>
+          <xs:documentation source="version">0.0.0+</xs:documentation>
+          <xs:documentation source="description">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 (&amp;lt;nolog/&amp;gt;) and whitelists (&amp;lt;log/&amp;gt;) specified on plugin
+                        level
+                        * false: logged only tracked and included by whitelists (&amp;lt;log/&amp;gt;) on plugin level
+                    </xs:documentation>
+        </xs:annotation>
+      </xs:element>
+    </xs:all>
+    <xs:attribute name="goal" type="xs:string" use="required">
+      <xs:annotation>
+        <xs:documentation source="version">0.0.0+</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+    <xs:attribute name="groupId" type="xs:string" use="optional">
+      <xs:annotation>
+        <xs:documentation source="version">0.0.0+</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+    <xs:attribute name="artifactId" type="xs:string" use="optional">
+      <xs:annotation>
+        <xs:documentation source="version">0.0.0+</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+  </xs:complexType>
+  <xs:complexType name="TrackedProperty">
+    <xs:simpleContent>
+      <xs:extension base="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">0.0.0+</xs:documentation>
+        </xs:annotation>
+        <xs:attribute name="propertyName" type="xs:string" use="optional">
+          <xs:annotation>
+            <xs:documentation source="version">0.0.0+</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="skipValue" type="xs:string" use="optional">
+          <xs:annotation>
+            <xs:documentation source="version">0.0.0+</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="defaultValue" type="xs:string" use="optional">
+          <xs:annotation>
+            <xs:documentation source="version">0.0.0+</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+      </xs:extension>
+    </xs:simpleContent>
+  </xs:complexType>
+  <xs:complexType name="PropertyName">
+    <xs:simpleContent>
+      <xs:extension base="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">0.0.0+</xs:documentation>
+        </xs:annotation>
+        <xs:attribute name="propertyName" type="xs:string" use="optional">
+          <xs:annotation>
+            <xs:documentation source="version">0.0.0+</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+      </xs:extension>
+    </xs:simpleContent>
+  </xs:complexType>
+  <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>
+  <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 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>
+  <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>
+  <xs:complexType name="Local">
+    <xs:annotation>
+      <xs:documentation source="version">0.0.0+</xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element minOccurs="0" name="location" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">0.0.0+</xs:documentation>
+          <xs:documentation source="description">The base directory where the local cache is located.
+                        Defaults to {@code $\{localRepository}/../cache}.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="maxBuildsCached" type="xs:int" default="3">
+        <xs:annotation>
+          <xs:documentation source="version">0.0.0+</xs:documentation>
+          <xs:documentation source="description">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:all>
+  </xs:complexType>
+  <xs:complexType name="Remote">
+    <xs:annotation>
+      <xs:documentation source="version">0.0.0+</xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element minOccurs="0" name="url" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">0.0.0+</xs:documentation>
+          <xs:documentation source="description">Address of remote cache</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+    </xs:all>
+    <xs:attribute name="enabled" type="xs:boolean" default="true" use="optional">
+      <xs:annotation>
+        <xs:documentation source="version">0.0.0+</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+    <xs:attribute name="saveToRemote" type="xs:boolean" default="false" use="optional">
+      <xs:annotation>
+        <xs:documentation source="version">0.0.0+</xs:documentation>
+        <xs:documentation source="description">Save output to remote cache. Recommended to enable on CI agents only.</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+    <xs:attribute name="transport" type="xs:string" default="resolver" use="optional">
+      <xs:annotation>
+        <xs:documentation source="version">0.0.0+</xs:documentation>
+        <xs:documentation source="description">The transport to use, currently, only &apos;resolver&apos; is supported.</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+    <xs:attribute name="id" type="xs:string" default="cache" use="optional">
+      <xs:annotation>
+        <xs:documentation source="version">0.0.0+</xs:documentation>
+        <xs:documentation source="description">The repository id used to find authentication / mirror information in maven settings, default to &apos;cache&apos;.</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+  </xs:complexType>
+  <xs:complexType name="AttachedOutputs">
+    <xs:annotation>
+      <xs:documentation source="version">0.0.0+</xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element minOccurs="0" name="dirNames">
+        <xs:annotation>
+          <xs:documentation source="version">0.0.0+</xs:documentation>
+          <xs:documentation source="description">Directory name in build output directory to attach to cached artifacts</xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element name="dirName" minOccurs="0" maxOccurs="unbounded" type="xs:string"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+</xs:schema>
\ No newline at end of file
diff --git a/content/resources/xsd/build-cache-diff-1.0.0.xsd b/content/resources/xsd/build-cache-diff-1.0.0.xsd
new file mode 100644
index 00000000..445e57d7
--- /dev/null
+++ b/content/resources/xsd/build-cache-diff-1.0.0.xsd
@@ -0,0 +1,100 @@
+<?xml version="1.0"?>
+<!--
+
+  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.
+-->
+<!-- =================== DO NOT EDIT THIS FILE ====================         -->
+<!-- Generated by Modello 2.0.0,                                            -->
+<!-- any modifications will be overwritten.                                 -->
+<!-- ==============================================================         -->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" xmlns="http://maven.apache.org/BUILD-CACHE-DIFF/1.0.0" targetNamespace="http://maven.apache.org/BUILD-CACHE-DIFF/1.0.0">
+  <xs:element name="diff" type="Diff">
+    <xs:annotation>
+      <xs:documentation source="version">0.0.0+</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:complexType name="Diff">
+    <xs:annotation>
+      <xs:documentation source="version">0.0.0+</xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element minOccurs="0" name="mismatches">
+        <xs:annotation>
+          <xs:documentation source="version">0.0.0+</xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element name="mismatch" minOccurs="0" maxOccurs="unbounded" type="Mismatch"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="Mismatch">
+    <xs:annotation>
+      <xs:documentation source="version">0.0.0+</xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element minOccurs="0" name="detail">
+        <xs:annotation>
+          <xs:documentation source="version">0.0.0+</xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element name="detail" minOccurs="0" maxOccurs="unbounded" type="MismatchDetail"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+    </xs:all>
+    <xs:attribute name="item" type="xs:string" use="optional">
+      <xs:annotation>
+        <xs:documentation source="version">0.0.0+</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+    <xs:attribute name="current" type="xs:string" use="optional">
+      <xs:annotation>
+        <xs:documentation source="version">0.0.0+</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+    <xs:attribute name="baseline" type="xs:string" use="optional">
+      <xs:annotation>
+        <xs:documentation source="version">0.0.0+</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+    <xs:attribute name="reason" type="xs:string" use="optional">
+      <xs:annotation>
+        <xs:documentation source="version">0.0.0+</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+    <xs:attribute name="resolution" type="xs:string" use="optional">
+      <xs:annotation>
+        <xs:documentation source="version">0.0.0+</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+    <xs:attribute name="context" type="xs:string" use="optional">
+      <xs:annotation>
+        <xs:documentation source="version">0.0.0+</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+  </xs:complexType>
+  <xs:complexType name="MismatchDetail">
+    <xs:annotation>
+      <xs:documentation source="version">0.0.0+</xs:documentation>
+    </xs:annotation>
+  </xs:complexType>
+</xs:schema>
\ No newline at end of file
diff --git a/content/resources/xsd/build-cache-report-1.0.0.xsd b/content/resources/xsd/build-cache-report-1.0.0.xsd
new file mode 100644
index 00000000..dc278895
--- /dev/null
+++ b/content/resources/xsd/build-cache-report-1.0.0.xsd
@@ -0,0 +1,100 @@
+<?xml version="1.0"?>
+<!--
+
+  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.
+-->
+<!-- =================== DO NOT EDIT THIS FILE ====================         -->
+<!-- Generated by Modello 2.0.0,                                            -->
+<!-- any modifications will be overwritten.                                 -->
+<!-- ==============================================================         -->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" xmlns="http://maven.apache.org/BUILD-CACHE-REPORT/1.0.0" targetNamespace="http://maven.apache.org/BUILD-CACHE-REPORT/1.0.0">
+  <xs:element name="cacheReport" type="CacheReport">
+    <xs:annotation>
+      <xs:documentation source="version">0.0.0+</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:complexType name="CacheReport">
+    <xs:annotation>
+      <xs:documentation source="version">0.0.0+</xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element minOccurs="0" name="projects">
+        <xs:annotation>
+          <xs:documentation source="version">0.0.0+</xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element name="project" minOccurs="0" maxOccurs="unbounded" type="ProjectReport"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+  <xs:complexType name="ProjectReport">
+    <xs:annotation>
+      <xs:documentation source="version">0.0.0+</xs:documentation>
+    </xs:annotation>
+    <xs:all>
+      <xs:element minOccurs="0" name="groupId" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">0.0.0+</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="artifactId" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">0.0.0+</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="checksum" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">0.0.0+</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="checksumMatched" type="xs:boolean">
+        <xs:annotation>
+          <xs:documentation source="version">0.0.0+</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="lifecycleMatched" type="xs:boolean">
+        <xs:annotation>
+          <xs:documentation source="version">0.0.0+</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="pluginsMatched" type="xs:boolean">
+        <xs:annotation>
+          <xs:documentation source="version">0.0.0+</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="source" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">0.0.0+</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="sharedToRemote" type="xs:boolean">
+        <xs:annotation>
+          <xs:documentation source="version">0.0.0+</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element minOccurs="0" name="url" type="xs:string">
+        <xs:annotation>
+          <xs:documentation source="version">0.0.0+</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+    </xs:all>
+  </xs:complexType>
+</xs:schema>
\ No newline at end of file