<?xml version="1.0" encoding="UTF-8"?>
<!--

    Copyright (C) 2022 Robert Stupp

    Licensed 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.

-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>org.caffinitas.dump-maven-model</groupId>
  <artifactId>dump-maven-model-parent</artifactId>
  <version>0.1.0</version>
  <packaging>pom</packaging>

  <name>Dump Maven Model - Parent</name>
  <description>Dumpy the model of a Maven project.</description>
  <url>https://caffinitas.org</url>
  <licenses>
    <license>
      <name>The Apache License, Version 2.0</name>
      <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
    </license>
  </licenses>

  <developers>
    <developer>
      <id>snazy</id>
      <name>Robert Stupp</name>
      <url>https://github.com/snazy</url>
    </developer>
  </developers>

  <modules>
    <module>extension</module>
  </modules>

  <scm>
    <connection>scm:git:https://github.com/snazy/dump-maven-model</connection>
    <developerConnection>scm:git:https://github.com/snazy/dump-maven-model</developerConnection>
    <url>https://github.com/snazy/dump-maven-model</url>
    <tag>main</tag>
  </scm>
  <issueManagement>
    <system>Github</system>
    <url>https://github.com/snazy/dump-maven-model/issues</url>
  </issueManagement>
  <distributionManagement>
    <snapshotRepository>
      <id>ossrh</id>
      <url>https://oss.sonatype.org/content/repositories/snapshots</url>
    </snapshotRepository>
    <repository>
      <id>ossrh</id>
      <url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url>
    </repository>
  </distributionManagement>

  <properties>
    <!-- Build properties -->
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.release>8</maven.compiler.release>
    <argLine />

    <!-- Version properties -->
    <assertj.version>3.22.0</assertj.version>
    <checkstyle.version>10.0</checkstyle.version>
    <errorprone-slf4j.version>0.1.4</errorprone-slf4j.version>
    <google-error-prone.version>2.10.0</google-error-prone.version>
    <google-java-format.version>1.14.0</google-java-format.version>
    <immutables.version>2.9.0</immutables.version>
    <jackson.version>2.13.1</jackson.version>
    <junit.version>5.8.2</junit.version>
    <maven.plugin-annotations.version>3.6.4</maven.plugin-annotations.version>
    <maven.version>3.8.4</maven.version>
    <surefire.version>3.0.0-M5</surefire.version>
  </properties>

  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>org.apache.maven</groupId>
        <artifactId>maven-plugin-api</artifactId>
        <version>${maven.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.maven.plugin-tools</groupId>
        <artifactId>maven-plugin-annotations</artifactId>
        <version>${maven.plugin-annotations.version}</version>
      </dependency>
      <dependency>
        <groupId>org.immutables</groupId>
        <artifactId>value</artifactId>
        <version>${immutables.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.maven</groupId>
        <artifactId>maven-core</artifactId>
        <version>${maven.version}</version>
      </dependency>
      <dependency>
        <groupId>com.fasterxml.jackson</groupId>
        <artifactId>jackson-bom</artifactId>
        <version>${jackson.version}</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
      <dependency>
        <groupId>org.junit</groupId>
        <artifactId>junit-bom</artifactId>
        <version>${junit.version}</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
      <dependency>
        <groupId>org.assertj</groupId>
        <artifactId>assertj-core</artifactId>
        <version>${assertj.version}</version>
      </dependency>
      <dependency>
        <groupId>com.google.googlejavaformat</groupId>
        <artifactId>google-java-format</artifactId>
        <version>${google-java-format.version}</version>
      </dependency>
      <dependency>
        <groupId>com.google.errorprone</groupId>
        <artifactId>error_prone_core</artifactId>
        <version>${google-error-prone.version}</version>
      </dependency>
      <dependency>
        <groupId>jp.skypencil.errorprone.slf4j</groupId>
        <artifactId>errorprone-slf4j</artifactId>
        <version>${errorprone-slf4j.version}</version>
      </dependency>
    </dependencies>
  </dependencyManagement>

  <build>
    <pluginManagement>
      <plugins>
        <!-- org.apache.maven plugins first -->
        <plugin>
          <artifactId>maven-assembly-plugin</artifactId>
          <version>3.3.0</version>
        </plugin>
        <plugin>
          <artifactId>maven-clean-plugin</artifactId>
          <version>3.1.0</version>
        </plugin>
        <plugin>
          <artifactId>maven-dependency-plugin</artifactId>
          <version>3.2.0</version>
        </plugin>
        <plugin>
          <artifactId>maven-resources-plugin</artifactId>
          <version>3.2.0</version>
        </plugin>
        <plugin>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.10.0</version>
          <configuration>
            <!-- without this, you get NPE rather than useful messages with Maven + JDK11 -->
            <forceJavacCompilerUse>true</forceJavacCompilerUse>
            <annotationProcessorPaths>
              <path>
                <groupId>org.immutables</groupId>
                <artifactId>value</artifactId>
                <version>${immutables.version}</version>
              </path>
            </annotationProcessorPaths>
            <compilerArgs>
              <arg>-parameters</arg>
            </compilerArgs>
          </configuration>
        </plugin>
        <plugin>
          <artifactId>maven-deploy-plugin</artifactId>
          <version>3.0.0-M2</version>
        </plugin>
        <plugin>
          <artifactId>maven-source-plugin</artifactId>
          <version>3.2.1</version>
        </plugin>
        <plugin>
          <artifactId>maven-enforcer-plugin</artifactId>
          <version>3.0.0</version>
        </plugin>
        <plugin>
          <artifactId>maven-install-plugin</artifactId>
          <version>3.0.0-M1</version>
        </plugin>
        <plugin>
          <artifactId>maven-jar-plugin</artifactId>
          <version>3.2.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-javadoc-plugin</artifactId>
          <version>3.3.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-site-plugin</artifactId>
          <version>3.11.0</version>
        </plugin>
        <plugin>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>${surefire.version}</version>
          <configuration>
            <argLine>@{argLine} -Dfile.encoding=UTF-8</argLine>
            <trimStackTrace>false</trimStackTrace>
            <systemProperties>
              <user.language>en</user.language>
              <user.country>US</user.country>
              <user.variant/>
            </systemProperties>
          </configuration>
        </plugin>
        <plugin>
          <artifactId>maven-failsafe-plugin</artifactId>
          <version>${surefire.version}</version>
          <configuration>
            <argLine>@{argLine} -Dfile.encoding=UTF-8</argLine>
            <trimStackTrace>false</trimStackTrace>
            <systemProperties>
              <user.language>en</user.language>
              <user.country>US</user.country>
              <user.variant/>
            </systemProperties>
            <useModulePath>false</useModulePath>
          </configuration>
        </plugin>
        <plugin>
          <artifactId>maven-release-plugin</artifactId>
          <version>3.0.0-M5</version>
        </plugin>
        <plugin>
          <artifactId>maven-checkstyle-plugin</artifactId>
          <version>3.1.2</version>
          <dependencies>
            <dependency>
              <groupId>com.puppycrawl.tools</groupId>
              <artifactId>checkstyle</artifactId>
              <version>${checkstyle.version}</version>
            </dependency>
          </dependencies>
        </plugin>
        <plugin>
          <groupId>com.diffplug.spotless</groupId>
          <artifactId>spotless-maven-plugin</artifactId>
          <version>2.21.0</version>
        </plugin>
        <plugin>
          <artifactId>maven-shade-plugin</artifactId>
          <version>3.2.4</version>
        </plugin>
        <plugin>
          <artifactId>maven-plugin-plugin</artifactId>
          <version>3.6.4</version>
        </plugin>
        <plugin>
          <artifactId>maven-gpg-plugin</artifactId>
          <version>3.0.1</version>
        </plugin>
        <plugin>
          <groupId>org.codehaus.plexus</groupId>
          <artifactId>plexus-component-metadata</artifactId>
          <version>2.1.1</version>
        </plugin>

        <!-- 3rd party plugins -->
        <plugin>
          <groupId>com.mycila</groupId>
          <artifactId>license-maven-plugin</artifactId>
          <version>4.1</version>
        </plugin>
        <plugin>
          <groupId>org.codehaus.mojo</groupId>
          <artifactId>tidy-maven-plugin</artifactId>
          <version>1.1.0</version>
        </plugin>
        <plugin>
          <groupId>org.jacoco</groupId>
          <artifactId>jacoco-maven-plugin</artifactId>
          <version>0.8.7</version>
        </plugin>
      </plugins>
    </pluginManagement>
    <plugins>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>tidy-maven-plugin</artifactId>
        <executions>
          <execution>
            <id>validate-pom</id>
            <goals>
              <goal>check</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <executions>
          <execution>
            <id>default-testJar</id>
            <goals>
              <goal>test-jar</goal>
            </goals>
            <configuration>
              <skipIfEmpty>true</skipIfEmpty>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-checkstyle-plugin</artifactId>
        <configuration>
          <!-- Specify source and test directories to not included generated source directories -->
          <sourceDirectories>
            <sourceDirectory>${project.basedir}/src/main/java</sourceDirectory>
          </sourceDirectories>
          <testSourceDirectories>
            <testSourceDirectory>${project.basedir}/src/test/java</testSourceDirectory>
          </testSourceDirectories>
          <encoding>UTF-8</encoding>
          <failsOnError>true</failsOnError>
          <failOnViolation>true</failOnViolation>
          <violationSeverity>warning</violationSeverity>
          <consoleOutput>true</consoleOutput>
          <includeResources>true</includeResources>
          <includeTestResources>true</includeTestResources>
          <resourceIncludes>**/*.properties,**/*.conf,**/*.json,**/*.xml</resourceIncludes>
          <includeTestSourceDirectory>true</includeTestSourceDirectory>
          <configLocation>codestyle/checkstyle-config.xml</configLocation>
          <skip>${skipCheckstyle}</skip>
        </configuration>
        <executions>
          <execution>
            <id>checkstyle-verification</id>
            <phase>verify</phase>
            <goals>
              <goal>check</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>com.mycila</groupId>
        <artifactId>license-maven-plugin</artifactId>
        <configuration>
          <skip>${skipLicense}</skip>
          <inlineHeader>
Copyright (C) ${project.inceptionYear} ${owner}

Licensed 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.
          </inlineHeader>
          <properties>
            <owner>Robert Stupp</owner>
            <project.inceptionYear>2022</project.inceptionYear>
          </properties>
          <project>
            <inceptionYear>2020</inceptionYear>
          </project>
          <failIfUnknown>true</failIfUnknown>
          <useDefaultExcludes>false</useDefaultExcludes>

          <includes>
            <include>src/**</include>
            <include>*</include>
          </includes>
          <excludes>
            <exclude>**/.mvn/**</exclude>
            <exclude>mvnw</exclude>
            <exclude>mvnw.cmd</exclude>
            <exclude>**/jvm.config</exclude>
            <exclude>**/*.java</exclude>
            <exclude>**/*.scala</exclude>
            <!-- default excludes (minus some items) from https://github.com/mycila/license-maven-plugin/blob/61f65ac65bfc38246a15fb84083796c5e3afb053/license-maven-plugin/src/main/java/com/mycila/maven/plugin/license/Default.java -->
            <exclude>**/*~</exclude>
            <exclude>**/000000_0</exclude>
            <exclude>**/#*#</exclude>
            <exclude>**/.#*</exclude>
            <exclude>**/%*%</exclude>
            <exclude>**/._*</exclude>
            <exclude>**/.repository/**</exclude>
            <exclude>**/CVS</exclude>
            <exclude>**/CVS/**</exclude>
            <exclude>**/.cvsignore</exclude>
            <exclude>**/RCS</exclude>
            <exclude>**/RCS/**</exclude>
            <exclude>**/SCCS</exclude>
            <exclude>**/SCCS/**</exclude>
            <exclude>**/vssver.scc</exclude>
            <exclude>**/.svn</exclude>
            <exclude>**/.svn/**</exclude>
            <exclude>**/.arch-ids</exclude>
            <exclude>**/.arch-ids/**</exclude>
            <exclude>**/.bzr</exclude>
            <exclude>**/.bzr/**</exclude>
            <exclude>**/.MySCMServerInfo</exclude>
            <exclude>**/.DS_Store</exclude>
            <exclude>**/.metadata</exclude>
            <exclude>**/.metadata/**</exclude>
            <exclude>**/.hg</exclude>
            <exclude>**/.hg/**</exclude>
            <exclude>**/.hgignore</exclude>
            <exclude>**/.git</exclude>
            <exclude>**/.git/**</exclude>
            <exclude>**/.gitignore</exclude>
            <exclude>**/.gitmodules</exclude>
            <exclude>**/BitKeeper</exclude>
            <exclude>**/BitKeeper/**</exclude>
            <exclude>**/ChangeSet</exclude>
            <exclude>**/ChangeSet/**</exclude>
            <exclude>**/_darcs</exclude>
            <exclude>**/_darcs/**</exclude>
            <exclude>**/.darcsrepo</exclude>
            <exclude>**/.darcsrepo/**</exclude>
            <exclude>**/-darcs-backup*</exclude>
            <exclude>**/.darcs-temp-mail</exclude>
            <!-- <exclude>**/target/**</exclude> want this for add-license-for-java-generated-from-proto -->
            <exclude>**/test-output/**</exclude>
            <exclude>**/release.properties</exclude>
            <exclude>**/dependency-reduced-pom.xml</exclude>
            <exclude>**/release-pom.xml</exclude>
            <exclude>**/pom.xml.releaseBackup</exclude>
            <exclude>**/cobertura.ser</exclude>
            <exclude>**/.clover/**</exclude>
            <exclude>**/.classpath</exclude>
            <exclude>**/.factorypath</exclude>
            <exclude>**/.project</exclude>
            <exclude>**/.settings/**</exclude>
            <exclude>**/*.iml</exclude>
            <exclude>**/*.ipr</exclude>
            <exclude>**/*.iws</exclude>
            <exclude>.idea/**</exclude>
            <exclude>**/nb-configuration.xml</exclude>
            <exclude>**/MANIFEST.MF</exclude>
            <exclude>**/*.jpg</exclude>
            <exclude>**/*.png</exclude>
            <exclude>**/*.gif</exclude>
            <exclude>**/*.ico</exclude>
            <exclude>**/*.bmp</exclude>
            <exclude>**/*.tiff</exclude>
            <exclude>**/*.tif</exclude>
            <exclude>**/*.cr2</exclude>
            <exclude>**/*.xcf</exclude>
            <exclude>**/*.class</exclude>
            <exclude>**/*.exe</exclude>
            <exclude>**/*.dll</exclude>
            <exclude>**/*.so</exclude>
            <exclude>**/*.md5</exclude>
            <exclude>**/*.sha1</exclude>
            <exclude>**/*.jar</exclude>
            <exclude>**/*.zip</exclude>
            <exclude>**/*.rar</exclude>
            <exclude>**/*.tar</exclude>
            <exclude>**/*.tar.gz</exclude>
            <exclude>**/*.tar.bz2</exclude>
            <exclude>**/*.gz</exclude>
            <exclude>**/*.xls</exclude>
            <exclude>**/META-INF/services/**</exclude>
            <exclude>**/META-INF/gradle-plugins/**</exclude>
            <exclude>**/*.md</exclude>
            <exclude>**/*.xls</exclude>
            <exclude>**/*.doc</exclude>
            <exclude>**/*.odt</exclude>
            <exclude>**/*.ods</exclude>
            <exclude>**/*.pdf</exclude>
            <exclude>**/.travis.yml</exclude>
            <exclude>**/*.swf</exclude>
            <exclude>**/*.json</exclude>
            <!-- <exclude>**/*.svg</exclude> -->
            <exclude>**/*.eot</exclude>
            <exclude>**/*.ttf</exclude>
            <exclude>**/*.woff</exclude>
            <exclude>**/*.xlsx</exclude>
            <exclude>**/*.docx</exclude>
            <exclude>**/*.ppt</exclude>
            <exclude>**/*.pptx</exclude>
            <exclude>**/*.patch</exclude>
            <!-- end default excludes -->

            <!-- by file extension -->
            <exclude>**/*.log</exclude>
            <exclude>**/*.txt</exclude>
            <exclude>**/*.csv</exclude>
            <exclude>**/*.tsv</exclude>
            <exclude>**/*.parquet</exclude>
            <exclude>**/*.jks</exclude>
            <exclude>**/*.nonformat</exclude>
            <exclude>**/*.gzip</exclude>
            <exclude>**/*.k</exclude>
            <exclude>**/*.q</exclude>
            <exclude>**/*.dat</exclude>
            <exclude>**/*.pem</exclude>

            <!-- by file name -->
            <exclude>**/Jenkinsfile</exclude>
            <exclude>**/LICENSE</exclude>
            <exclude>**/NOTICE</exclude>
            <exclude>**/postinstall</exclude>
            <exclude>**/.babelrc</exclude>
            <exclude>**/.checkstyle</exclude>
            <exclude>**/.eslintcache</exclude>
            <exclude>**/.eslintignore</exclude>
            <exclude>**/.eslintrc</exclude>
            <exclude>**/git.properties</exclude>
            <exclude>**/pom.xml.versionsBackup</exclude>
            <exclude>**/q</exclude>
            <exclude>**/c.java</exclude>
            <exclude>**/swagger-ui/**</exclude>
            <exclude>**/gradlew</exclude>

            <!-- by directory name -->
            <exclude>**/node_modules/**</exclude>
            <exclude>**/.idea/**</exclude>
            <exclude>**/db/**</exclude>
            <exclude>**/*.ipynb</exclude>
          </excludes>
          <mapping>
            <DataSourceRegister>SCRIPT_STYLE</DataSourceRegister>
            <properties>SCRIPT_STYLE</properties>
            <java>SLASHSTAR_STYLE</java>
            <hql>DOUBLEDASHES_STYLE</hql>
            <jnk>DOUBLESLASH_STYLE</jnk>
            <stg>DOUBLESLASH_STYLE</stg>
            <g>DOUBLESLASH_STYLE</g>
            <proto>SLASHSTAR_STYLE</proto>
            <less>SLASHSTAR_STYLE</less>
            <hpp>SLASHSTAR_STYLE</hpp>
            <cc>SLASHSTAR_STYLE</cc>
            <tdd>SCRIPT_STYLE</tdd>
            <command>SCRIPT_STYLE</command>
            <fmpp>SCRIPT_STYLE</fmpp>
            <q>DOUBLEDASHES_STYLE</q>
            <conf>SCRIPT_STYLE</conf>
            <jj>SLASHSTAR_STYLE</jj>
            <dss>SCRIPT_STYLE</dss>
            <rc>SCRIPT_STYLE</rc>
            <service>SCRIPT_STYLE</service>
            <svg>XML_STYLE</svg>
            <mvnw>SCRIPT_STYLE</mvnw>
            <jsx>SLASHSTAR_STYLE</jsx>
            <tsx>SLASHSTAR_STYLE</tsx>
            <ts>SLASHSTAR_STYLE</ts>
            <jmx>XML_STYLE</jmx>
            <g4>SLASHSTAR_STYLE</g4>
          </mapping>
        </configuration>
        <executions>
          <execution>
            <id>default-cli</id>
            <goals>
              <goal>format</goal>
            </goals>
          </execution>
          <execution>
            <id>verify-license-headers</id>
            <phase>verify</phase>
            <goals>
              <goal>check</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <artifactId>maven-enforcer-plugin</artifactId>
        <executions>
          <execution>
            <id>avoid-bad-dependencies</id>
            <phase>verify</phase>
            <goals>
              <goal>enforce</goal>
            </goals>
            <configuration>
              <skip>${skipEnforcer}</skip>
              <rules>
                <bannedDependencies>
                  <excludes>
                    <exclude>commons-logging</exclude>
                    <exclude>javax.servlet:servlet-api</exclude>
                    <exclude>org.mortbay.jetty:servlet-api</exclude>
                    <exclude>org.mortbay.jetty:servlet-api-2.5</exclude>
                    <exclude>log4j:log4j</exclude>
                  </excludes>
                </bannedDependencies>
              </rules>
            </configuration>
          </execution>
          <execution>
            <id>enforce-project-rules</id>
            <goals>
              <goal>enforce</goal>
            </goals>
            <configuration>
              <rules>
                <banDuplicatePomDependencyVersions />
                <requireJavaVersion>
                  <version>11</version>
                </requireJavaVersion>
                <requireMavenVersion>
                  <version>[3.6.2,)</version>
                </requireMavenVersion>
              </rules>
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>

  <profiles>
    <profile>
      <!--
           Do not activate errorprone while running with Eclipse/M2E as it causes incompatibilities
           with other annotation processors.
           See https://github.com/jbosstools/m2e-apt/issues/62 for details
      -->
      <id>error-prone</id>
      <activation>
        <property>
           <name>!m2e.version</name>
        </property>
      </activation>
      <build>
        <plugins>
          <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
              <compilerArgs combine.children="append">
                <arg>-XDcompilePolicy=simple</arg>
                <arg>-Xplugin:ErrorProne -XepExcludedPaths:.*/target/generated-*sources/.*</arg>
              </compilerArgs>
              <annotationProcessorPaths combine.children="append">
                <path>
                  <groupId>com.google.errorprone</groupId>
                  <artifactId>error_prone_core</artifactId>
                  <version>${google-error-prone.version}</version>
                </path>
                <path>
                  <groupId>jp.skypencil.errorprone.slf4j</groupId>
                  <artifactId>errorprone-slf4j</artifactId>
                  <version>${errorprone-slf4j.version}</version>
                </path>
              </annotationProcessorPaths>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>release</id>
      <build>
        <plugins>
          <plugin>
            <artifactId>maven-source-plugin</artifactId>
            <executions>
              <execution>
                <id>default-sourcesJar</id>
                <goals>
                  <goal>jar-no-fork</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
          <plugin>
            <artifactId>maven-javadoc-plugin</artifactId>
            <executions>
              <execution>
                <id>default-javadocJar</id>
                <goals>
                  <goal>jar</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
          <plugin>
            <artifactId>maven-gpg-plugin</artifactId>
            <executions>
              <execution>
                <id>default-sign</id>
                <goals>
                  <goal>sign</goal>
                </goals>
                <configuration>
                  <skip>${skipGpg}</skip>
                  <gpgArguments>
                    <arg>--pinentry-mode</arg>
                    <arg>loopback</arg>
                  </gpgArguments>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>spotless</id>
      <activation>
        <property>
          <name>!skipSpotless</name>
        </property>
      </activation>
      <build>
        <plugins>
          <plugin>
            <groupId>com.diffplug.spotless</groupId>
            <artifactId>spotless-maven-plugin</artifactId>
            <configuration>
              <formats>
                <format>
                  <includes>
                    <include>.gitignore</include>
                  </includes>
                  <trimTrailingWhitespace/>
                  <endWithNewline/>
                  <indent>
                    <spaces>true</spaces>
                    <spacesPerTab>2</spacesPerTab>
                  </indent>
                </format>
                <format>
                  <includes>
                    <include>src/**/*.xml</include>
                    <include>src/**/*.xsd</include>
                  </includes>
                  <excludes>
                    <exclude>**/.idea/**</exclude>
                    <exclude>codestyle/**</exclude>
                    <exclude>site/**</exclude>
                    <exclude>**/pom.xml</exclude>
                    <exclude>**/.flattened-pom.xml</exclude>
                    <exclude>**/.tox/**</exclude>
                    <exclude>**/target/**</exclude>
                    <exclude>**/build/**</exclude>
                    <exclude>**/node_modules/**</exclude>
                    <exclude>**/venv/**</exclude>
                  </excludes>
                  <eclipseWtp>
                    <type>XML</type>
                    <files>
                      <file>${maven.multiModuleProjectDirectory}/codestyle/org.eclipse.wst.xml.core.prefs</file>
                    </files>
                  </eclipseWtp>
                </format>
              </formats>
              <java>
                <google-java-format>
                  <version>${google-java-format.version}</version>
                </google-java-format>
                <licenseHeader>
                  <file>${maven.multiModuleProjectDirectory}/codestyle/copyright-header-java.txt</file>
                  <delimiter>(package|import) </delimiter>
                </licenseHeader>
              </java>
            </configuration>
            <executions>
              <execution>
                <id>spotless-check</id>
                <phase>verify</phase>
                <goals>
                  <goal>check</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
  </profiles>
</project>
