<?xml version="1.0" encoding="UTF-8"?><project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>org.jenkins-ci</groupId>
  <artifactId>jenkins</artifactId>
  <version>2.1328.vfd10e2339a_19</version>
  <packaging>pom</packaging>
  <name>Jenkins Parent POM</name>
  <description>Standard Parent POM for non-plugin Jenkins components: core, libraries, etc.</description>
  <url>https://github.com/jenkinsci/pom</url>
  <inceptionYear>2004</inceptionYear>
  <mailingLists>
    <mailingList>
      <name>Jenkins advisories list</name>
      <subscribe>jenkinsci-advisories+subscribe@googlegroups.com</subscribe>
      <unsubscribe>jenkinsci-advisories+unsubscribe@googlegroups.com</unsubscribe>
      <archive>https://groups.google.com/g/jenkinsci-advisories</archive>
    </mailingList>
    <mailingList>
      <name>Jenkins developer discussion list</name>
      <subscribe>jenkinsci-dev+subscribe@googlegroups.com</subscribe>
      <unsubscribe>jenkinsci-dev+unsubscribe@googlegroups.com</unsubscribe>
      <post>jenkinsci-dev@googlegroups.com</post>
      <archive>https://groups.google.com/g/jenkinsci-dev</archive>
    </mailingList>
    <mailingList>
      <name>Jenkins user discussion list</name>
      <subscribe>jenkinsci-users+subscribe@googlegroups.com</subscribe>
      <unsubscribe>jenkinsci-users+unsubscribe@googlegroups.com</unsubscribe>
      <post>jenkinsci-users@googlegroups.com</post>
      <archive>https://groups.google.com/g/jenkinsci-users</archive>
    </mailingList>
  </mailingLists>
  <scm>
    <connection>scm:git:https://github.com/jenkinsci/pom.git</connection>
    <developerConnection>scm:git:git@github.com:jenkinsci/pom.git</developerConnection>
    <tag>fd10e2339a1959c20f7b72e9e8c5039a620443e3</tag>
    <url>https://github.com/jenkinsci/pom</url>
  </scm>
  <ciManagement>
    <system>Jenkins</system>
    <url>https://ci.jenkins.io</url>
  </ciManagement>
  <distributionManagement>
    <repository>
      <uniqueVersion>false</uniqueVersion>
      <id>maven.jenkins-ci.org</id>
      <url>https://repo.jenkins-ci.org/releases/</url>
    </repository>
    <snapshotRepository>
      <id>maven.jenkins-ci.org</id>
      <url>https://repo.jenkins-ci.org/snapshots/</url>
    </snapshotRepository>
  </distributionManagement>
  <properties>
    <maven-checkstyle-plugin.version>3.6.0</maven-checkstyle-plugin.version>
    <spotbugs-annotations.version>4.9.8</spotbugs-annotations.version>
    <maven-gpg-plugin.version>3.2.8</maven-gpg-plugin.version>
    <incrementals-plugin.version>1.13</incrementals-plugin.version>
    <flatten-maven-plugin.version>1.7.3</flatten-maven-plugin.version>
    <!-- Set to false to enable Spotless -->
    <spotless.check.skip>true</spotless.check.skip>
    <maven-javadoc-plugin.version>3.12.0</maven-javadoc-plugin.version>
    <maven-antrun-plugin.version>3.2.0</maven-antrun-plugin.version>
    <stapler-maven-plugin.version>278.vc90e156a_c20e</stapler-maven-plugin.version>
    <junit.version>6.0.1</junit.version>
    <jellydoc-maven-plugin.version>226.v2eddb_617a_307</jellydoc-maven-plugin.version>
    <!-- Generate metadata for reflection on method parameters -->
    <maven.compiler.parameters>true</maven.compiler.parameters>
    <maven-jar-plugin.version>3.5.0</maven-jar-plugin.version>
    <maven-compiler-plugin.version>3.14.1</maven-compiler-plugin.version>
    <maven-clean-plugin.version>3.5.0</maven-clean-plugin.version>
    <revision>2</revision>
    <spotless-maven-plugin.version>3.1.0</spotless-maven-plugin.version>
    <maven-enforcer-plugin.version>3.6.2</maven-enforcer-plugin.version>
    <maven-surefire-plugin.version>3.5.4</maven-surefire-plugin.version>
    <changelist>999999-SNAPSHOT</changelist>
    <license-maven-plugin.version>184.v19c87b_6b_a_9a_c</license-maven-plugin.version>
    <maven-war-plugin.version>3.5.1</maven-war-plugin.version>
    <maven-resources-plugin.version>3.4.0</maven-resources-plugin.version>
    <buildnumber-maven-plugin.version>3.2.1</buildnumber-maven-plugin.version>
    <exec-maven-plugin.version>3.6.3</exec-maven-plugin.version>
    <maven.compiler.release>21</maven.compiler.release>
    <maven-install-plugin.version>3.1.4</maven-install-plugin.version>
    <maven-remote-resources-plugin.version>3.3.0</maven-remote-resources-plugin.version>
    <lifecycle-mapping.version>1.0.0</lifecycle-mapping.version>
    <maven-project-info-reports-plugin.version>3.9.0</maven-project-info-reports-plugin.version>
    <maven-release-plugin.version>3.3.1</maven-release-plugin.version>
    <maven-source-plugin.version>3.4.0</maven-source-plugin.version>
    <!--
      The following bug patterns are noisy and create little value; therefore, we suppress them
      globally.

      ConstructorThrow
        CT_CONSTRUCTOR_THROW
      FindReturnRef
        EI_EXPOSE_BUF2
        EI_EXPOSE_REP
        EI_EXPOSE_REP2
        EI_EXPOSE_STATIC_BUF2
        EI_EXPOSE_STATIC_REP2
        MS_EXPOSE_BUF
        MS_EXPOSE_REP
      MultipleInstantiationsOfSingletons
        SING_SINGLETON_GETTER_NOT_SYNCHRONIZED
        SING_SINGLETON_HAS_NONPRIVATE_CONSTRUCTOR
        SING_SINGLETON_IMPLEMENTS_CLONEABLE
        SING_SINGLETON_IMPLEMENTS_CLONE_METHOD
        SING_SINGLETON_IMPLEMENTS_SERIALIZABLE
        SING_SINGLETON_INDIRECTLY_IMPLEMENTS_CLONEABLE
      SharedVariableAtomicityDetector
        AT_NONATOMIC_64BIT_PRIMITIVE
        AT_NONATOMIC_OPERATIONS_ON_SHARED_VARIABLE
        AT_STALE_THREAD_WRITE_OF_PRIMITIVE
      ThrowingExceptions
        THROWS_METHOD_THROWS_CLAUSE_BASIC_EXCEPTION
        THROWS_METHOD_THROWS_CLAUSE_THROWABLE
        THROWS_METHOD_THROWS_RUNTIMEEXCEPTION
    -->
    <spotbugs.omitVisitors>ConstructorThrow,FindReturnRef,MultipleInstantiationsOfSingletons,SharedVariableAtomicityDetector,ThrowingExceptions</spotbugs.omitVisitors>
    <gitHubRepo>jenkinsci/pom</gitHubRepo>
    <hamcrest.version>3.0</hamcrest.version>
    <project.build.outputEncoding>UTF-8</project.build.outputEncoding>
    <maven-dependency-plugin.version>3.9.0</maven-dependency-plugin.version>
    <localizer-maven-plugin.version>1.31</localizer-maven-plugin.version>
    <!-- Set to false to enable enforcer banning org.junit.* imports -->
    <ban-junit4-imports.skip>true</ban-junit4-imports.skip>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <incrementals-enforce-minimum.version>1.0-beta-4</incrementals-enforce-minimum.version>
    <maven-help-plugin.version>3.5.1</maven-help-plugin.version>
    <scmTag>HEAD</scmTag>
    <maven-deploy-plugin.version>3.1.4</maven-deploy-plugin.version>
    <build-helper-maven-plugin.version>3.6.1</build-helper-maven-plugin.version>
    <mockito.version>5.21.0</mockito.version>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <maven-assembly-plugin.version>3.8.0</maven-assembly-plugin.version>
    <spotbugs-maven-plugin.version>4.9.8.2</spotbugs-maven-plugin.version>
    <maven.compiler.testRelease>${maven.compiler.release}</maven.compiler.testRelease>
    <maven-eclipse-plugin.version>2.10</maven-eclipse-plugin.version>
    <hpi-plugin.version>3.1795.v6fb_496fc129b_</hpi-plugin.version>
    <maven-site-plugin.version>3.21.0</maven-site-plugin.version>
  </properties>
  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>org.junit</groupId>
        <artifactId>junit-bom</artifactId>
        <version>${junit.version}</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
      <dependency>
        <groupId>org.mockito</groupId>
        <artifactId>mockito-bom</artifactId>
        <version>${mockito.version}</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
      <dependency>
        <groupId>com.github.spotbugs</groupId>
        <artifactId>spotbugs-annotations</artifactId>
        <version>${spotbugs-annotations.version}</version>
      </dependency>
      <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.13.2</version>
      </dependency>
      <dependency>
        <groupId>org.hamcrest</groupId>
        <artifactId>hamcrest</artifactId>
        <version>${hamcrest.version}</version>
      </dependency>
      <dependency>
        <groupId>org.hamcrest</groupId>
        <artifactId>hamcrest-core</artifactId>
        <version>${hamcrest.version}</version>
      </dependency>
      <dependency>
        <groupId>org.jenkins-ci</groupId>
        <artifactId>test-annotations</artifactId>
        <version>123.vccb_d8e653685</version>
      </dependency>
    </dependencies>
  </dependencyManagement>
  <repositories>
    <repository>
      <releases>
        <enabled>true</enabled>
      </releases>
      <snapshots>
        <enabled>false</enabled>
      </snapshots>
      <id>repo.jenkins-ci.org</id>
      <url>https://repo.jenkins-ci.org/public/</url>
    </repository>
  </repositories>
  <pluginRepositories>
    <pluginRepository>
      <releases>
        <enabled>true</enabled>
      </releases>
      <snapshots>
        <enabled>false</enabled>
      </snapshots>
      <id>repo.jenkins-ci.org</id>
      <url>https://repo.jenkins-ci.org/public/</url>
    </pluginRepository>
  </pluginRepositories>
  <build>
    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>io.jenkins.tools.maven</groupId>
          <artifactId>jellydoc-maven-plugin</artifactId>
          <version>${jellydoc-maven-plugin.version}</version>
        </plugin>
        <plugin>
          <groupId>io.jenkins.tools.maven</groupId>
          <artifactId>license-maven-plugin</artifactId>
          <version>${license-maven-plugin.version}</version>
        </plugin>
        <plugin>
          <groupId>com.diffplug.spotless</groupId>
          <artifactId>spotless-maven-plugin</artifactId>
          <version>${spotless-maven-plugin.version}</version>
        </plugin>
        <plugin>
          <groupId>com.github.spotbugs</groupId>
          <artifactId>spotbugs-maven-plugin</artifactId>
          <version>${spotbugs-maven-plugin.version}</version>
        </plugin>
        <plugin>
          <groupId>io.jenkins.tools.incrementals</groupId>
          <artifactId>incrementals-maven-plugin</artifactId>
          <version>${incrementals-plugin.version}</version>
          <configuration>
            <includes>
              <include>org.jenkins-ci.*</include>
              <include>io.jenkins.*</include>
            </includes>
            <generateBackupPoms>false</generateBackupPoms>
            <updateNonincremental>false</updateNonincremental>
          </configuration>
        </plugin>
        <plugin>
          <artifactId>maven-antrun-plugin</artifactId>
          <version>${maven-antrun-plugin.version}</version>
        </plugin>
        <plugin>
          <artifactId>maven-assembly-plugin</artifactId>
          <version>${maven-assembly-plugin.version}</version>
        </plugin>
        <plugin>
          <artifactId>maven-checkstyle-plugin</artifactId>
          <version>${maven-checkstyle-plugin.version}</version>
        </plugin>
        <plugin>
          <artifactId>maven-clean-plugin</artifactId>
          <version>${maven-clean-plugin.version}</version>
        </plugin>
        <plugin>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>${maven-compiler-plugin.version}</version>
        </plugin>
        <plugin>
          <artifactId>maven-dependency-plugin</artifactId>
          <version>${maven-dependency-plugin.version}</version>
        </plugin>
        <plugin>
          <artifactId>maven-deploy-plugin</artifactId>
          <version>${maven-deploy-plugin.version}</version>
        </plugin>
        <plugin>
          <artifactId>maven-eclipse-plugin</artifactId>
          <version>${maven-eclipse-plugin.version}</version>
        </plugin>
        <plugin>
          <artifactId>maven-enforcer-plugin</artifactId>
          <version>${maven-enforcer-plugin.version}</version>
        </plugin>
        <plugin>
          <artifactId>maven-gpg-plugin</artifactId>
          <version>${maven-gpg-plugin.version}</version>
        </plugin>
        <plugin>
          <artifactId>maven-help-plugin</artifactId>
          <version>${maven-help-plugin.version}</version>
        </plugin>
        <plugin>
          <artifactId>maven-install-plugin</artifactId>
          <version>${maven-install-plugin.version}</version>
        </plugin>
        <plugin>
          <artifactId>maven-jar-plugin</artifactId>
          <version>${maven-jar-plugin.version}</version>
        </plugin>
        <plugin>
          <artifactId>maven-javadoc-plugin</artifactId>
          <version>${maven-javadoc-plugin.version}</version>
          <configuration>
            <doclint>all,-missing</doclint>
            <locale>en_US</locale>
            <notimestamp>true</notimestamp>
          </configuration>
        </plugin>
        <plugin>
          <artifactId>maven-project-info-reports-plugin</artifactId>
          <version>${maven-project-info-reports-plugin.version}</version>
        </plugin>
        <plugin>
          <artifactId>maven-release-plugin</artifactId>
          <version>${maven-release-plugin.version}</version>
        </plugin>
        <plugin>
          <artifactId>maven-remote-resources-plugin</artifactId>
          <version>${maven-remote-resources-plugin.version}</version>
        </plugin>
        <plugin>
          <artifactId>maven-resources-plugin</artifactId>
          <version>${maven-resources-plugin.version}</version>
        </plugin>
        <plugin>
          <artifactId>maven-site-plugin</artifactId>
          <version>${maven-site-plugin.version}</version>
        </plugin>
        <plugin>
          <artifactId>maven-source-plugin</artifactId>
          <version>${maven-source-plugin.version}</version>
        </plugin>
        <plugin>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>${maven-surefire-plugin.version}</version>
        </plugin>
        <plugin>
          <artifactId>maven-surefire-report-plugin</artifactId>
          <version>${maven-surefire-plugin.version}</version>
        </plugin>
        <plugin>
          <artifactId>maven-war-plugin</artifactId>
          <version>${maven-war-plugin.version}</version>
        </plugin>
        <plugin>
          <groupId>org.codehaus.mojo</groupId>
          <artifactId>build-helper-maven-plugin</artifactId>
          <version>${build-helper-maven-plugin.version}</version>
          <executions>
            <execution>
              <id>add-source</id>
              <phase>generate-sources</phase>
              <goals>
                <goal>add-source</goal>
              </goals>
              <configuration>
                <sources>
                  <source>${project.build.directory}/generated-sources/localizer</source>
                </sources>
              </configuration>
            </execution>
          </executions>
        </plugin>
        <plugin>
          <groupId>org.codehaus.mojo</groupId>
          <artifactId>buildnumber-maven-plugin</artifactId>
          <version>${buildnumber-maven-plugin.version}</version>
        </plugin>
        <plugin>
          <groupId>org.codehaus.mojo</groupId>
          <artifactId>exec-maven-plugin</artifactId>
          <version>${exec-maven-plugin.version}</version>
        </plugin>
        <plugin>
          <groupId>org.eclipse.m2e</groupId>
          <artifactId>lifecycle-mapping</artifactId>
          <version>${lifecycle-mapping.version}</version>
          <configuration>
            <lifecycleMappingMetadata>
              <pluginExecutions>
                <pluginExecution>
                  <pluginExecutionFilter>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-enforcer-plugin</artifactId>
                    <versionRange>${maven-enforcer-plugin.version}</versionRange>
                    <goals>
                      <goal>display-info</goal>
                    </goals>
                  </pluginExecutionFilter>
                  <action>
                    <execute/>
                  </action>
                </pluginExecution>
                <pluginExecution>
                  <pluginExecutionFilter>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-enforcer-plugin</artifactId>
                    <versionRange>${maven-enforcer-plugin.version}</versionRange>
                    <goals>
                      <goal>enforce</goal>
                    </goals>
                  </pluginExecutionFilter>
                  <action>
                    <ignore/>
                  </action>
                </pluginExecution>
                <pluginExecution>
                  <pluginExecutionFilter>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-remote-resources-plugin</artifactId>
                    <versionRange>${maven-remote-resources-plugin.version}</versionRange>
                    <goals>
                      <goal>process</goal>
                    </goals>
                  </pluginExecutionFilter>
                  <action>
                    <ignore/>
                  </action>
                </pluginExecution>
                <pluginExecution>
                  <pluginExecutionFilter>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-war-plugin</artifactId>
                    <versionRange>${maven-war-plugin.version}</versionRange>
                    <goals>
                      <goal>exploded</goal>
                    </goals>
                  </pluginExecutionFilter>
                  <action>
                    <ignore/>
                  </action>
                </pluginExecution>
                <pluginExecution>
                  <pluginExecutionFilter>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>build-helper-maven-plugin</artifactId>
                    <versionRange>${build-helper-maven-plugin.version}</versionRange>
                    <goals>
                      <goal>regex-property</goal>
                      <goal>timestamp-property</goal>
                    </goals>
                  </pluginExecutionFilter>
                  <action>
                    <execute/>
                  </action>
                </pluginExecution>
                <pluginExecution>
                  <pluginExecutionFilter>
                    <groupId>io.jenkins.tools</groupId>
                    <artifactId>bridge-method-injector</artifactId>
                    <versionRange>[1.4,)</versionRange>
                    <goals>
                      <goal>process</goal>
                    </goals>
                  </pluginExecutionFilter>
                  <action>
                    <execute/>
                  </action>
                </pluginExecution>
                <pluginExecution>
                  <pluginExecutionFilter>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-dependency-plugin</artifactId>
                    <versionRange>[2.3,)</versionRange>
                    <goals>
                      <goal>copy</goal>
                    </goals>
                  </pluginExecutionFilter>
                  <action>
                    <ignore/>
                  </action>
                </pluginExecution>
                <pluginExecution>
                  <pluginExecutionFilter>
                    <groupId>org.kohsuke</groupId>
                    <artifactId>access-modifier-checker</artifactId>
                    <versionRange>[1.0,)</versionRange>
                    <goals>
                      <goal>enforce</goal>
                    </goals>
                  </pluginExecutionFilter>
                  <action>
                    <ignore/>
                  </action>
                </pluginExecution>
                <pluginExecution>
                  <pluginExecutionFilter>
                    <groupId>org.jvnet.hudson.tools</groupId>
                    <artifactId>maven-encoding-plugin</artifactId>
                    <versionRange>[1.1,)</versionRange>
                    <goals>
                      <goal>check-encoding</goal>
                    </goals>
                  </pluginExecutionFilter>
                  <action>
                    <ignore/>
                  </action>
                </pluginExecution>
                <pluginExecution>
                  <pluginExecutionFilter>
                    <groupId>org.antlr</groupId>
                    <artifactId>antlr4-maven-plugin</artifactId>
                    <versionRange>[4.11,)</versionRange>
                    <goals>
                      <goal>antlr4</goal>
                    </goals>
                  </pluginExecutionFilter>
                  <action>
                    <execute/>
                  </action>
                </pluginExecution>
                <pluginExecution>
                  <pluginExecutionFilter>
                    <groupId>org.jvnet.localizer</groupId>
                    <artifactId>localizer-maven-plugin</artifactId>
                    <versionRange>[1.28,)</versionRange>
                    <goals>
                      <goal>generate</goal>
                    </goals>
                  </pluginExecutionFilter>
                  <action>
                    <execute/>
                  </action>
                </pluginExecution>
                <pluginExecution>
                  <pluginExecutionFilter>
                    <groupId>org.jenkins-ci.tools</groupId>
                    <artifactId>maven-hpi-plugin</artifactId>
                    <versionRange>[1.74,)</versionRange>
                    <goals>
                      <goal>generate-taglib-interface</goal>
                    </goals>
                  </pluginExecutionFilter>
                  <action>
                    <execute/>
                  </action>
                </pluginExecution>
              </pluginExecutions>
            </lifecycleMappingMetadata>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.jenkins-ci.tools</groupId>
          <artifactId>maven-hpi-plugin</artifactId>
          <version>${hpi-plugin.version}</version>
        </plugin>
        <plugin>
          <groupId>org.jvnet.localizer</groupId>
          <artifactId>localizer-maven-plugin</artifactId>
          <version>${localizer-maven-plugin.version}</version>
        </plugin>
        <plugin>
          <groupId>io.jenkins.tools.maven</groupId>
          <artifactId>stapler-maven-plugin</artifactId>
          <version>${stapler-maven-plugin.version}</version>
        </plugin>
      </plugins>
    </pluginManagement>
    <plugins>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>buildnumber-maven-plugin</artifactId>
        <executions>
          <execution>
            <phase>validate</phase>
            <goals>
              <goal>create</goal>
            </goals>
          </execution>
        </executions>
        <configuration>
          <doCheck>true</doCheck>
          <failTheBuild>false</failTheBuild>
          <getRevisionOnlyOnce>true</getRevisionOnlyOnce>
        </configuration>
      </plugin>
      <plugin>
        <artifactId>maven-jar-plugin</artifactId>
        <configuration>
          <archive>
            <manifest>
              <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
              <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
            </manifest>
            <manifestEntries>
              <Implementation-Build>${buildNumber}</Implementation-Build>
            </manifestEntries>
          </archive>
        </configuration>
      </plugin>
      <plugin>
        <artifactId>maven-surefire-plugin</artifactId>
        <configuration>
          <runOrder>alphabetical</runOrder>
        </configuration>
      </plugin>
      <plugin>
        <artifactId>maven-war-plugin</artifactId>
        <configuration>
          <archive>
            <manifest>
              <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
            </manifest>
            <manifestEntries>
              <Implementation-Build>${buildNumber}</Implementation-Build>
            </manifestEntries>
          </archive>
        </configuration>
      </plugin>
      <plugin>
        <groupId>com.github.spotbugs</groupId>
        <artifactId>spotbugs-maven-plugin</artifactId>
        <executions>
          <execution>
            <id>spotbugs</id>
            <phase>verify</phase>
            <goals>
              <goal>check</goal>
            </goals>
          </execution>
        </executions>
        <configuration>
          <plugins>
            <plugin>
              <groupId>com.h3xstream.findsecbugs</groupId>
              <artifactId>findsecbugs-plugin</artifactId>
              <version>1.14.0</version>
            </plugin>
          </plugins>
        </configuration>
      </plugin>
      <plugin>
        <groupId>com.diffplug.spotless</groupId>
        <artifactId>spotless-maven-plugin</artifactId>
        <executions>
          <execution>
            <goals>
              <goal>check</goal>
            </goals>
          </execution>
        </executions>
        <configuration>
          <java>
            <endWithNewline/>
            <importOrder/>
            <indent>
              <spaces>true</spaces>
            </indent>
            <!-- Declare version so that spotless does not choose a version based on JDK version -->
            <!-- https://github.com/diffplug/spotless/issues/2503#issuecomment-2953146277 -->
            <palantirJavaFormat>
              <version>2.83.0</version>
            </palantirJavaFormat>
            <removeUnusedImports/>
            <trimTrailingWhitespace/>
          </java>
          <pom>
            <sortPom>
              <expandEmptyElements>false</expandEmptyElements>
              <sortDependencies>scope,groupId,artifactId</sortDependencies>
              <sortDependencyExclusions>groupId,artifactId</sortDependencyExclusions>
              <spaceBeforeCloseEmptyElement>true</spaceBeforeCloseEmptyElement>
            </sortPom>
          </pom>
        </configuration>
      </plugin>
      <plugin>
        <artifactId>maven-enforcer-plugin</artifactId>
        <executions>
          <execution>
            <id>display-info</id>
            <phase>validate</phase>
            <goals>
              <goal>enforce</goal>
            </goals>
            <configuration>
              <rules>
                <requireMavenVersion>
                  <version>[3.9.6,)</version>
                  <message>3.9.6 to use Maven plugins using JDK17 bytecode.</message>
                </requireMavenVersion>
                <!-- TODO failing during incrementals deploy: MENFORCER-281
                <requirePluginVersions>
                  <banSnapshots>false</banSnapshots>
                </requirePluginVersions>
                -->
                <requireJavaVersion>
                  <version>[${maven.compiler.release},)</version>
                </requireJavaVersion>
                <bannedDependencies>
                  <excludes>
                    <exclude>javax.servlet:servlet-api</exclude>
                    <exclude>log4j:log4j</exclude>
                    <!-- CVE-2021-44228 -->
                    <exclude>org.apache.logging.log4j:*:(,2.15.0-rc1]</exclude>
                    <!-- The Jenkins test harness wreaks havoc in production, so ensure it is in test scope. -->
                    <exclude>org.jenkins-ci.main:jenkins-test-harness:*:jar:compile</exclude>
                    <!-- PowerMock has been abandoned and does not work on newer Java versions. -->
                    <exclude>org.powermock:powermock-api-easymock</exclude>
                    <exclude>org.powermock:powermock-api-mockito2</exclude>
                    <exclude>org.powermock:powermock-api-support</exclude>
                    <exclude>org.powermock:powermock-classloading-base</exclude>
                    <exclude>org.powermock:powermock-classloading-objenesis</exclude>
                    <exclude>org.powermock:powermock-classloading-xstream</exclude>
                    <exclude>org.powermock:powermock-core</exclude>
                    <exclude>org.powermock:powermock-module-javaagent</exclude>
                    <exclude>org.powermock:powermock-module-junit4</exclude>
                    <exclude>org.powermock:powermock-module-junit4-common</exclude>
                    <exclude>org.powermock:powermock-module-junit4-legacy</exclude>
                    <exclude>org.powermock:powermock-module-junit4-rule</exclude>
                    <exclude>org.powermock:powermock-module-junit4-rule-agent</exclude>
                    <exclude>org.powermock:powermock-module-testng</exclude>
                    <exclude>org.powermock:powermock-module-testng-agent</exclude>
                    <exclude>org.powermock:powermock-module-testng-common</exclude>
                  </excludes>
                </bannedDependencies>
                <requireUpperBoundDeps>
                  <excludes>
                    <exclude>com.google.code.findbugs:jsr305</exclude>
                  </excludes>
                </requireUpperBoundDeps>
                <enforceBytecodeVersion>
                  <maxJdkVersion>${maven.compiler.release}</maxJdkVersion>
                  <ignoredScopes>
                    <ignoredScope>test</ignoredScope>
                  </ignoredScopes>
                </enforceBytecodeVersion>
              </rules>
            </configuration>
          </execution>
          <execution>
            <id>check-junit-imports</id>
            <phase>process-sources</phase>
            <goals>
              <goal>enforce</goal>
            </goals>
            <configuration>
              <rules>
                <RestrictImports>
                  <reason>Use JUnit 5 (org.junit.jupiter.*)</reason>
                  <bannedImports>
                    <bannedImport>junit.**</bannedImport>
                    <bannedImport>org.junit.**</bannedImport>
                  </bannedImports>
                  <allowedImports>
                    <allowedImport>org.junit.jupiter.**</allowedImport>
                    <allowedImport>org.junit.platform.**</allowedImport>
                  </allowedImports>
                </RestrictImports>
              </rules>
              <skip>${ban-junit4-imports.skip}</skip>
            </configuration>
          </execution>
        </executions>
        <dependencies>
          <dependency>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>extra-enforcer-rules</artifactId>
            <version>1.11.0</version>
          </dependency>
          <dependency>
            <groupId>de.skuzzle.enforcer</groupId>
            <artifactId>restrict-imports-enforcer-rule</artifactId>
            <version>3.0.0</version>
          </dependency>
        </dependencies>
      </plugin>
      <plugin>
        <artifactId>maven-eclipse-plugin</artifactId>
      </plugin>
      <plugin>
        <artifactId>maven-release-plugin</artifactId>
        <configuration>
          <releaseProfiles>jenkins-release,!consume-incrementals</releaseProfiles>
        </configuration>
      </plugin>
      <!--  the following 2 plugins are for integration tests of pom only -->
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>mrm-maven-plugin</artifactId>
        <version>1.7.0</version>
        <executions>
          <execution>
            <goals>
              <goal>start</goal>
              <goal>stop</goal>
            </goals>
            <configuration>
              <propertyName>repository.proxy.url</propertyName>
              <repositories>
                <proxyRepo/>
              </repositories>
            </configuration>
          </execution>
        </executions>
        <inherited>false</inherited>
      </plugin>
      <plugin>
        <artifactId>maven-invoker-plugin</artifactId>
        <version>3.9.1</version>
        <executions>
          <execution>
            <id>integration-test</id>
            <goals>
              <goal>install</goal>
              <goal>run</goal>
            </goals>
            <configuration>
              <streamLogs>true</streamLogs>
              <showErrors>true</showErrors>
              <cloneProjectsTo>${project.build.directory}/its</cloneProjectsTo>
              <localRepositoryPath>${basedir}/target/local-repo</localRepositoryPath>
              <settingsFile>src/it/settings.xml</settingsFile>
              <writeJunitReport>true</writeJunitReport>
              <junitPackageName>its</junitPackageName>
              <filterProperties>
                <repository.proxy.url>${repository.proxy.url}</repository.proxy.url>
              </filterProperties>
            </configuration>
          </execution>
        </executions>
        <inherited>false</inherited>
      </plugin>
    </plugins>
  </build>
  <profiles>
    <profile>
      <id>jenkins-release</id>
      <build>
        <plugins>
          <plugin>
            <artifactId>maven-source-plugin</artifactId>
            <executions>
              <execution>
                <id>attach-sources</id>
                <goals>
                  <goal>jar-no-fork</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
          <plugin>
            <artifactId>maven-javadoc-plugin</artifactId>
            <executions>
              <execution>
                <id>attach-javadocs</id>
                <goals>
                  <goal>jar</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>spotbugs-exclusion-file</id>
      <activation>
        <file>
          <exists>${basedir}/src/spotbugs/excludesFilter.xml</exists>
        </file>
      </activation>
      <build>
        <plugins>
          <plugin>
            <groupId>com.github.spotbugs</groupId>
            <artifactId>spotbugs-maven-plugin</artifactId>
            <executions>
              <execution>
                <id>spotbugs</id>
                <configuration>
                  <excludeFilterFile>${project.basedir}/src/spotbugs/excludesFilter.xml</excludeFilterFile>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>all-tests</id>
      <activation>
        <property>
          <name>!test</name>
        </property>
      </activation>
      <properties>
        <maven.test.redirectTestOutputToFile>true</maven.test.redirectTestOutputToFile>
      </properties>
    </profile>
    <profile>
      <id>specific-test</id>
      <activation>
        <property>
          <name>test</name>
        </property>
      </activation>
      <properties>
        <surefire.failIfNoSpecifiedTests>false</surefire.failIfNoSpecifiedTests>
      </properties>
    </profile>
    <profile>
      <id>always-check-remote-repositories</id>
      <properties>
        <maven.repository.update.freqency>always</maven.repository.update.freqency>
      </properties>
    </profile>
    <profile>
      <!-- JEP-305 -->
      <id>consume-incrementals</id>
      <repositories>
        <repository>
          <snapshots>
            <enabled>false</enabled>
          </snapshots>
          <id>incrementals</id>
          <url>https://repo.jenkins-ci.org/incrementals/</url>
        </repository>
      </repositories>
      <pluginRepositories>
        <pluginRepository>
          <snapshots>
            <enabled>false</enabled>
          </snapshots>
          <id>incrementals</id>
          <url>https://repo.jenkins-ci.org/incrementals/</url>
        </pluginRepository>
      </pluginRepositories>
    </profile>
    <profile>
      <id>might-produce-incrementals</id>
      <build>
        <plugins>
          <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>flatten-maven-plugin</artifactId>
            <version>${flatten-maven-plugin.version}</version>
            <executions>
              <execution>
                <id>flatten</id>
                <phase>process-resources</phase>
                <goals>
                  <goal>flatten</goal>
                </goals>
                <configuration>
                  <flattenMode>oss</flattenMode>
                  <outputDirectory>${project.build.directory}</outputDirectory>
                  <flattenedPomFilename>${project.artifactId}-${project.version}.pom</flattenedPomFilename>
                  <!-- TODO https://github.com/mojohaus/flatten-maven-plugin/issues/362 -->
                  <pomElements>
                    <repositories>flatten</repositories>
                  </pomElements>
                </configuration>
              </execution>
            </executions>
            <configuration>
              <updatePomFile>true</updatePomFile>
            </configuration>
          </plugin>
          <plugin>
            <artifactId>maven-enforcer-plugin</artifactId>
            <executions>
              <execution>
                <id>display-info</id>
                <configuration>
                  <rules>
                    <requireExtensionVersion>
                      <version>[${incrementals-enforce-minimum.version},)</version>
                    </requireExtensionVersion>
                  </rules>
                </configuration>
              </execution>
            </executions>
            <dependencies>
              <dependency>
                <groupId>io.jenkins.tools.incrementals</groupId>
                <artifactId>incrementals-enforcer-rules</artifactId>
                <version>${incrementals-plugin.version}</version>
              </dependency>
            </dependencies>
          </plugin>
          <plugin>
            <artifactId>maven-release-plugin</artifactId>
            <configuration>
              <completionGoals>incrementals:reincrementalify</completionGoals>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
    <!--
    A profile that is identical to "might-produce-incrementals" but with "flatten-maven-plugin"
    configured to interpolate variables in the "scm", "url", and "version" elements and keep all
    other elements untouched. This is only intended to be used with repositories like "pom" and
    "plugin-pom". If the POM from these repositories were flattened with the "oss" flatten mode,
    then the resulting incremental build would be missing critical sections and would not be
    suitable for consumers. If the "scm", "url", and "version" elements were not interpolated,
    then the resulting incremental build would contain e.g. an SCM tag of "${scmTag}" and could
    not be published to the incrementals repository.
    -->
    <profile>
      <id>might-produce-incrementals-with-minimal-flattening</id>
      <build>
        <plugins>
          <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>flatten-maven-plugin</artifactId>
            <version>${flatten-maven-plugin.version}</version>
            <executions>
              <execution>
                <id>flatten</id>
                <phase>process-resources</phase>
                <goals>
                  <goal>flatten</goal>
                </goals>
                <configuration>
                  <keepCommentsInPom>true</keepCommentsInPom>
                  <pomElements>
                    <build>keep</build>
                    <ciManagement>keep</ciManagement>
                    <contributors>keep</contributors>
                    <dependencies>keep</dependencies>
                    <dependencyManagement>keep</dependencyManagement>
                    <description>keep</description>
                    <developers>keep</developers>
                    <distributionManagement>keep</distributionManagement>
                    <inceptionYear>keep</inceptionYear>
                    <issueManagement>keep</issueManagement>
                    <mailingLists>keep</mailingLists>
                    <modules>keep</modules>
                    <name>keep</name>
                    <organization>keep</organization>
                    <parent>keep</parent>
                    <pluginManagement>keep</pluginManagement>
                    <pluginRepositories>keep</pluginRepositories>
                    <prerequisites>keep</prerequisites>
                    <profiles>keep</profiles>
                    <properties>keep</properties>
                    <reporting>keep</reporting>
                    <repositories>keep</repositories>
                    <scm>interpolate</scm>
                    <url>interpolate</url>
                    <version>interpolate</version>
                  </pomElements>
                  <outputDirectory>${project.build.directory}</outputDirectory>
                  <flattenedPomFilename>${project.artifactId}-${project.version}.pom</flattenedPomFilename>
                </configuration>
              </execution>
            </executions>
            <configuration>
              <updatePomFile>true</updatePomFile>
            </configuration>
          </plugin>
          <plugin>
            <artifactId>maven-release-plugin</artifactId>
            <configuration>
              <completionGoals>incrementals:reincrementalify</completionGoals>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>produce-incrementals</id>
      <activation>
        <property>
          <name>set.changelist</name>
          <value>true</value>
        </property>
      </activation>
      <build>
        <plugins>
          <!-- Copied from jenkins-release: -->
          <plugin>
            <artifactId>maven-source-plugin</artifactId>
            <executions>
              <execution>
                <id>attach-sources</id>
                <goals>
                  <goal>jar-no-fork</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
          <plugin>
            <artifactId>maven-javadoc-plugin</artifactId>
            <executions>
              <execution>
                <id>attach-javadocs</id>
                <goals>
                  <goal>jar</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
      <distributionManagement>
        <repository>
          <id>incrementals</id>
          <url>https://repo.jenkins-ci.org/incrementals/</url>
        </repository>
      </distributionManagement>
    </profile>
    <profile>
      <!-- JEP-229 -->
      <id>block-MRP</id>
      <activation>
        <property>
          <name>changelist.format</name>
        </property>
      </activation>
      <build>
        <plugins>
          <plugin>
            <artifactId>maven-release-plugin</artifactId>
            <configuration>
              <preparationGoals>not-set-up-for-MRP</preparationGoals>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>annotation-processors</id>
      <activation>
        <jdk>[21,)</jdk>
      </activation>
      <build>
        <plugins>
          <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
              <compilerArgs>
                <arg>-proc:full</arg>
              </compilerArgs>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <!--  a profile that disables as much testing as possible whilst still producing the artifacts -->
      <id>quick-build</id>
      <properties>
        <spotless.skip>true</spotless.skip>
        <spotbugs.skip>true</spotbugs.skip>
        <invoker.skip>true</invoker.skip>
        <checkstyle.skip>true</checkstyle.skip>
        <yarn.lint.skip>true</yarn.lint.skip>
        <!-- we can not use maven.test.skip because we may be producing a test jar -->
        <skipTests>true</skipTests>
        <enforcer.skip>true</enforcer.skip>
        <access-modifier-checker.skip>true</access-modifier-checker.skip>
      </properties>
    </profile>
    <profile>
      <id>may-spotless-apply</id>
      <build>
        <plugins>
          <plugin>
            <groupId>com.diffplug.spotless</groupId>
            <artifactId>spotless-maven-plugin</artifactId>
            <executions>
              <execution>
                <id>spotless-apply</id>
                <phase>validate</phase>
                <goals>
                  <goal>apply</goal>
                </goals>
                <configuration>
                  <skip>${spotless.check.skip}</skip>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
  </profiles>
</project>