<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/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <parent>
    <groupId>org.kohsuke</groupId>
    <artifactId>pom</artifactId>
    <version>21</version>
    <relativePath />
  </parent>

  <artifactId>github-api</artifactId>
  <version>1.101</version>
  <name>GitHub API for Java</name>
  <url>https://github-api.kohsuke.org/</url>
  <description>GitHub API for Java</description>

  <scm>
    <connection>scm:git:git@github.com/github-api/${project.artifactId}.git</connection>
    <developerConnection>scm:git:ssh://git@github.com/github-api/${project.artifactId}.git</developerConnection>
    <url>https://${project.artifactId}.kohsuke.org/</url>
    <tag>github-api-1.101</tag>
  </scm>

  <distributionManagement>
    <site>
      <id>github-pages</id>
      <url>gitsite:git@github.com/github-api/${project.artifactId}.git</url>
    </site>
  </distributionManagement>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <spotbugs-maven-plugin.version>3.1.12.2</spotbugs-maven-plugin.version>
    <spotbugs.version>3.1.12</spotbugs.version>
    <spotbugs-maven-plugin.failOnError>true</spotbugs-maven-plugin.failOnError>
    <hamcrest.version>2.2</hamcrest.version>
    <okhttp3.version>4.2.2</okhttp3.version>
    <okio.version>2.4.1</okio.version>
    <formatter-maven-plugin.goal>format</formatter-maven-plugin.goal>
    <impsort-maven-plugin.goal>sort</impsort-maven-plugin.goal>
    <jacoco.coverage.target.class>.80</jacoco.coverage.target.class>
    <jacoco.coverage.target.method>0.20</jacoco.coverage.target.method>
    <jacoco.coverage.target.line>0.50</jacoco.coverage.target.line>
    <jacoco.coverage.target.other>0.50</jacoco.coverage.target.other>
    <!-- For non-ci builds we'd like the build to still complete if jacoco metrics aren't met. -->
    <jacoco.haltOnFailure>false</jacoco.haltOnFailure>
  </properties>

  <build>
    <extensions>
      <extension>
        <groupId>org.apache.maven.scm</groupId>
        <artifactId>maven-scm-provider-gitexe</artifactId>
        <version>1.11.2</version>
      </extension>
      <extension>
        <groupId>org.apache.maven.scm</groupId>
        <artifactId>maven-scm-manager-plexus</artifactId>
        <version>1.11.2</version>
      </extension>
    </extensions>
    <testResources>
      <testResource>
        <directory>src/test/resources</directory>
        <excludes>
          <exclude>**/wiremock/**</exclude>
        </excludes>
      </testResource>
    </testResources>
    <pluginManagement>
      <plugins>
        <!-- adds jacoco coverage -->
        <plugin>
          <groupId>org.jacoco</groupId>
          <artifactId>jacoco-maven-plugin</artifactId>
          <version>0.8.5</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-javadoc-plugin</artifactId>
          <version>3.1.1</version>
          <configuration>
            <source>8</source>
            <failOnWarnings>true</failOnWarnings>
          </configuration>
        </plugin>
      </plugins>
    </pluginManagement>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-site-plugin</artifactId>
        <version>3.8.2</version>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-release-plugin</artifactId>
        <version>2.5.3</version>
        <configuration>
          <autoVersionSubmodules>true</autoVersionSubmodules>
          <useReleaseProfile>false</useReleaseProfile>
          <releaseProfiles>release</releaseProfiles>
          <goals>deploy</goals>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-project-info-reports-plugin</artifactId>
        <version>3.0.0</version>
        <dependencies>
          <dependency>
            <groupId>org.apache.bcel</groupId>
            <artifactId>bcel</artifactId>
            <version>6.4.1</version>
          </dependency>
        </dependencies>
      </plugin>
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.8.1</version>
        <configuration>
          <source>1.8</source>
          <target>1.8</target>
          <annotationProcessorPaths>
            <annotationProcessorPath>
              <groupId>org.jenkins-ci</groupId>
              <artifactId>annotation-indexer</artifactId>
              <version>1.12</version>
            </annotationProcessorPath>
          </annotationProcessorPaths>
        </configuration>
      </plugin>

      <plugin>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>2.22.2</version>
      </plugin>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>animal-sniffer-maven-plugin</artifactId>
        <version>1.18</version>
        <configuration>
          <signature>
            <groupId>org.codehaus.mojo.signature</groupId>
            <artifactId>java18</artifactId>
            <version>1.0</version>
          </signature>
        </configuration>
        <executions>
          <execution>
            <id>ensure-java-1.8-class-library</id>
            <phase>test</phase>
            <goals>
              <goal>check</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>com.infradna.tool</groupId>
        <artifactId>bridge-method-injector</artifactId>
        <version>1.18</version>
        <executions>
          <execution>
            <goals>
              <goal>process</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>net.revelc.code.formatter</groupId>
        <artifactId>formatter-maven-plugin</artifactId>
        <version>2.11.0</version>
        <executions>
          <execution>
            <goals>
              <goal>${formatter-maven-plugin.goal}</goal>
            </goals>
            <configuration>
              <configFile>src/main/resources/eclipse/formatter.xml</configFile>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>net.revelc.code</groupId>
        <artifactId>impsort-maven-plugin</artifactId>
        <version>1.3.2</version>
        <configuration>
          <groups>*,java.,javax.</groups>
          <removeUnused>true</removeUnused>
          <staticAfter>true</staticAfter>
        </configuration>
        <executions>
          <execution>
            <goals>
              <goal>${impsort-maven-plugin.goal}</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>com.github.spotbugs</groupId>
        <artifactId>spotbugs-maven-plugin</artifactId>
        <version>${spotbugs-maven-plugin.version}</version>
        <configuration>
          <xmlOutput>true</xmlOutput>
          <failOnError>${spotbugs-maven-plugin.failOnError}</failOnError>
        </configuration>
        <executions>
          <execution>
            <id>run-spotbugs</id>
            <phase>verify</phase>
            <goals>
              <goal>check</goal>
            </goals>
          </execution>
        </executions>
        <dependencies>
          <!-- overwrite dependency on spotbugs if you want to specify the version of spotbugs -->
          <dependency>
            <groupId>com.github.spotbugs</groupId>
            <artifactId>spotbugs</artifactId>
            <version>${spotbugs.version}</version>
          </dependency>
        </dependencies>
      </plugin>
      <!-- Do not use gmaven plugin -->
      <plugin>
        <groupId>org.codehaus.gmaven</groupId>
        <artifactId>gmaven-plugin</artifactId>
        <executions>
          <execution>
            <goals>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>

  <dependencies>
    <dependency>
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-lang3</artifactId>
      <version>3.9</version>
    </dependency>
    <dependency>
      <groupId>commons-codec</groupId>
      <artifactId>commons-codec</artifactId>
      <version>1.13</version>
    </dependency>
    <dependency>
      <groupId>org.hamcrest</groupId>
      <artifactId>hamcrest</artifactId>
      <version>${hamcrest.version}</version>
      <scope>test</scope>
    </dependency>
    <!-- This is needed in order to force junit4 and JTH tests to use newer hamcrest version -->
    <dependency>
      <groupId>org.hamcrest</groupId>
      <artifactId>hamcrest-core</artifactId>
      <version>${hamcrest.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.hamcrest</groupId>
      <artifactId>hamcrest-library</artifactId>
      <version>${hamcrest.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.12</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-databind</artifactId>
      <version>2.10.1</version>
    </dependency>
    <dependency>
      <groupId>commons-io</groupId>
      <artifactId>commons-io</artifactId>
      <version>2.6</version>
    </dependency>
    <dependency>
      <groupId>com.infradna.tool</groupId>
      <artifactId>bridge-method-annotation</artifactId>
      <version>1.18</version>
      <optional>true</optional>
    </dependency>
    <dependency>
      <groupId>org.kohsuke.stapler</groupId>
      <artifactId>stapler-jetty</artifactId>
      <version>1.1</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.eclipse.jgit</groupId>
      <artifactId>org.eclipse.jgit</artifactId>
      <version>5.5.1.201910021850-r</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>com.squareup.okio</groupId>
      <artifactId>okio</artifactId>
      <version>${okio.version}</version>
      <optional>true</optional>
    </dependency>
    <dependency>
      <groupId>com.squareup.okhttp3</groupId>
      <artifactId>okhttp</artifactId>
      <version>${okhttp3.version}</version>
      <optional>true</optional>
    </dependency>
    <!-- This is the last version of okhttp3 that support UrlConnection -->
    <!-- The class using this has been deprecated, this dependency can be remove when that class is. -->
    <dependency>
      <groupId>com.squareup.okhttp3</groupId>
      <artifactId>okhttp-urlconnection</artifactId>
      <version>3.12.3</version>
      <optional>true</optional>
    </dependency>
    <dependency>
      <groupId>com.squareup.okhttp</groupId>
      <artifactId>okhttp-urlconnection</artifactId>
      <version>2.7.5</version>
      <optional>true</optional>
    </dependency>
    <dependency>
      <groupId>org.kohsuke</groupId>
      <artifactId>wordnet-random-name</artifactId>
      <version>1.3</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.mockito</groupId>
      <artifactId>mockito-core</artifactId>
      <version>3.1.0</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>com.github.spotbugs</groupId>
      <artifactId>spotbugs-annotations</artifactId>
      <version>${spotbugs.version}</version>
      <optional>true</optional>
    </dependency>
    <dependency>
      <groupId>com.github.tomakehurst</groupId>
      <artifactId>wiremock-jre8-standalone</artifactId>
      <version>2.25.1</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>com.google.code.gson</groupId>
      <artifactId>gson</artifactId>
      <version>2.8.6</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
  <repositories>
    <repository>
      <id>repo.jenkins-ci.org</id>
      <url>https://repo.jenkins-ci.org/public/</url>
    </repository>
  </repositories>
  <pluginRepositories>
    <pluginRepository>
      <id>repo.jenkins-ci.org</id>
      <url>https://repo.jenkins-ci.org/public/</url>
    </pluginRepository>
  </pluginRepositories>
  <profiles>
    <profile>
      <id>ci</id>
      <properties>
        <formatter-maven-plugin.goal>validate</formatter-maven-plugin.goal>
        <impsort-maven-plugin.goal>check</impsort-maven-plugin.goal>
      </properties>
      <build>
      </build>
    </profile>
    <profile>
      <id>jacoco</id>
      <activation>
        <property>
          <name>enable-jacoco</name>
        </property>
      </activation>
      <build>
        <plugins>
          <plugin>
            <groupId>org.jacoco</groupId>
            <artifactId>jacoco-maven-plugin</artifactId>
            <version>0.8.5</version>
            <executions>
              <execution>
                <goals>
                  <goal>prepare-agent</goal>
                </goals>
              </execution>
              <!-- attached to Maven test phase -->
              <execution>
                <id>report</id>
                <phase>test</phase>
                <goals>
                  <goal>report</goal>
                </goals>
              </execution>
              <execution>
                <id>check</id>
                <phase>install</phase>
                <goals>
                  <goal>check</goal>
                </goals>
                <configuration>
                  <rules>
                    <rule>
                      <!--We end up with chatty logs, but it shows us which particular classes    -->
                      <!--are lacking in coverage. If this is too much, just remove the           -->
                      <!--<element>CLASS</element> tag below.                                     -->
                      <element>CLASS</element>
                      <limits>
                        <!-- These limits can be overridden, in the form of `0.50` for          -->
                        <!-- 50%, as necessary. Using a property just puts it in one spot.      -->
                        <!--
                                                <limit>
                                                  <counter>LINE</counter>
                                                  <value>COVEREDRATIO</value>
                                                  <minimum>${jacoco.coverage.target.lines}</minimum>
                                                </limit>
                        -->
                        <!--
                                                <limit>
                                                  <counter>BRANCH</counter>
                                                  <value>COVEREDRATIO</value>
                                                  <minimum>${jacoco.coverage.target.other}</minimum>
                                                </limit>
                        -->
                        <!--
                                                <limit>
                                                  <counter>INSTRUCTION</counter>
                                                  <value>COVEREDRATIO</value>
                                                  <minimum>${jacoco.coverage.target.other}</minimum>
                                                </limit>
                        -->
                        <!--
                                                <limit>
                                                  <counter>COMPLEXITY</counter>
                                                  <value>COVEREDRATIO</value>
                                                  <minimum>${jacoco.coverage.target.other}</minimum>
                                                </limit>
                        -->
                        <limit>
                          <counter>METHOD</counter>
                          <value>COVEREDRATIO</value>
                          <minimum>${jacoco.coverage.target.method}</minimum>
                        </limit>
                        <!--                        <limit>-->
                        <!--                          <counter>CLASS</counter>-->
                        <!--                          <value>COVEREDRATIO</value>-->
                        <!--                          <minimum>${jacoco.coverage.target.class}</minimum>-->
                        <!--                        </limit>-->
                      </limits>
                      <excludes>
                        <exclude>org.kohsuke.github.extras.okhttp3.ObsoleteUrlFactory.**</exclude>
                        <exclude>org.kohsuke.github.extras.okhttp3.ObsoleteUrlFactory</exclude>
                        <exclude>org.kohsuke.github.extras.OkHttp3Connector</exclude>
                        <!--<exclude>io.jenkins.plugins.todeclarative.converter.api.*</exclude>-->
                      </excludes>
                    </rule>
                  </rules>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>release</id>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-gpg-plugin</artifactId>
            <version>1.6</version>
            <executions>
              <execution>
                <id>sign-artifacts</id>
                <phase>verify</phase>
                <goals>
                  <goal>sign</goal>
                </goals>
                <configuration>
                  <gpgArguments>
                    <arg>--pinentry-mode</arg>
                    <arg>loopback</arg>
                  </gpgArguments>
                </configuration>
              </execution>
            </executions>
          </plugin>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-source-plugin</artifactId>
            <version>3.2.0</version>
          </plugin>
        </plugins>
      </build>
    </profile>
  </profiles>
  <reporting>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-javadoc-plugin</artifactId>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-project-info-reports-plugin</artifactId>
      </plugin>
    </plugins>
  </reporting>

  <licenses>
    <license>
      <name>The MIT license</name>
      <url>https://www.opensource.org/licenses/mit-license.php</url>
      <distribution>repo</distribution>
    </license>
  </licenses>

  <mailingLists>
    <mailingList>
      <name>User List</name>
      <post>github-api@googlegroups.com</post>
      <archive>https://groups.google.com/forum/#!forum/github-api</archive>
    </mailingList>
  </mailingLists>
</project>
