<?xml version="1.0" encoding="UTF-8"?>
<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.jvnet.hudson.plugins</groupId>
    <artifactId>analysis-pom</artifactId>
    <version>10.4.0</version>
    <relativePath />
  </parent>

  <groupId>io.jenkins.plugins</groupId>
  <artifactId>warnings-ng</artifactId>
  <version>12.2.0</version>
  <packaging>hpi</packaging>
  <name>Warnings Plugin</name>

  <description>Collects compiler warnings or issues reported by static analysis
    tools and visualizes the results. It has built-in support for more than one hundred static analysis tools
    (including several compilers), see the list of supported report formats.</description>
  <url>https://github.com/jenkinsci/warnings-ng-plugin</url>

  <licenses>
    <license>
      <name>MIT license</name>
      <comments>All source code is under the MIT license.</comments>
    </license>
  </licenses>

  <developers>
    <developer>
      <id>uhafner</id>
      <name>Ullrich Hafner</name>
      <email>ullrich.hafner@gmail.com</email>
    </developer>
  </developers>

  <scm>
    <connection>scm:git:https://github.com/jenkinsci/${project.artifactId}-plugin.git</connection>
    <developerConnection>scm:git:git@github.com:jenkinsci/${project.artifactId}-plugin.git</developerConnection>
    <tag>v12.2.0</tag>
    <url>https://github.com/jenkinsci/${project.artifactId}-plugin</url>
  </scm>

  <properties>
    <module.name>${project.groupId}.warnings.ng</module.name>

    <analysis-model-api.version>13.0.0</analysis-model-api.version>
    <analysis-model-tests.version>${analysis-model-api.version}</analysis-model-tests.version>
    <pull-request-monitoring.version>335.v525cd64ec76b_</pull-request-monitoring.version>

    <eclipse-collections.version>9.2.0</eclipse-collections.version>

    <!-- Test Library Dependencies Versions -->
    <xmlunit.version>2.10.0</xmlunit.version>
    <jsoup.version>1.18.3</jsoup.version>
    <jmh.version>1.37</jmh.version>
    <testcontainers.version>1.20.4</testcontainers.version>

    <!-- Jenkins Plug-in Dependencies Versions -->
    <flexible-publish.version>0.15.2</flexible-publish.version>
    <form-element-path.version>1.11</form-element-path.version>

    <!-- Maven Surefire ArgLine -->
    <argLine>-Djava.awt.headless=true -Xmx1024m -Djenkins.test.timeout=1000 --add-opens java.base/java.lang=ALL-UNNAMED
      --add-opens java.base/java.io=ALL-UNNAMED --add-opens java.base/java.util=ALL-UNNAMED --add-opens
      java.base/java.util.concurrent=ALL-UNNAMED</argLine>
  </properties>

  <dependencies>

    <!-- Project Library Dependencies -->
    <dependency>
      <groupId>org.eclipse.collections</groupId>
      <artifactId>eclipse-collections-api</artifactId>
      <version>${eclipse-collections.version}</version>
    </dependency>
    <dependency>
      <groupId>org.eclipse.collections</groupId>
      <artifactId>eclipse-collections</artifactId>
      <version>${eclipse-collections.version}</version>
    </dependency>
    <dependency>
      <groupId>org.jsoup</groupId>
      <artifactId>jsoup</artifactId>
      <version>${jsoup.version}</version>
    </dependency>

    <!-- Required Jenkins Plug-in Dependencies -->
    <dependency>
      <groupId>io.jenkins.plugins</groupId>
      <artifactId>analysis-model-api</artifactId>
      <version>${analysis-model-api.version}</version>
    </dependency>
    <dependency>
      <groupId>io.jenkins.plugins</groupId>
      <artifactId>plugin-util-api</artifactId>
      <!-- TODO: remove the version when a matching BOM is available -->
      <version>6.0.0</version>
    </dependency>
    <dependency>
      <groupId>io.jenkins.plugins</groupId>
      <artifactId>font-awesome-api</artifactId>
    </dependency>
    <dependency>
      <groupId>io.jenkins.plugins</groupId>
      <artifactId>bootstrap5-api</artifactId>
    </dependency>
    <dependency>
      <groupId>io.jenkins.plugins</groupId>
      <artifactId>jquery3-api</artifactId>
    </dependency>
    <dependency>
      <groupId>io.jenkins.plugins</groupId>
      <artifactId>echarts-api</artifactId>
    </dependency>
    <dependency>
      <groupId>io.jenkins.plugins</groupId>
      <artifactId>data-tables-api</artifactId>
    </dependency>
    <dependency>
      <groupId>io.jenkins.plugins</groupId>
      <artifactId>prism-api</artifactId>
    </dependency>
    <dependency>
      <groupId>org.jenkins-ci.plugins</groupId>
      <artifactId>jackson2-api</artifactId>
    </dependency>
    <dependency>
      <groupId>org.jenkins-ci.plugins.workflow</groupId>
      <artifactId>workflow-api</artifactId>
    </dependency>
    <dependency>
      <groupId>org.jenkins-ci.plugins.workflow</groupId>
      <artifactId>workflow-cps</artifactId>
    </dependency>
    <dependency>
      <groupId>org.jenkins-ci.plugins.workflow</groupId>
      <artifactId>workflow-step-api</artifactId>
    </dependency>
    <dependency>
      <groupId>org.jenkins-ci.plugins.workflow</groupId>
      <artifactId>workflow-job</artifactId>
    </dependency>
    <dependency>
      <groupId>org.jenkins-ci.plugins</groupId>
      <artifactId>structs</artifactId>
    </dependency>
    <dependency>
      <groupId>org.jenkins-ci.plugins</groupId>
      <artifactId>antisamy-markup-formatter</artifactId>
    </dependency>
    <dependency>
      <groupId>io.jenkins.plugins</groupId>
      <artifactId>checks-api</artifactId>
    </dependency>
    <dependency>
      <groupId>io.jenkins.plugins</groupId>
      <artifactId>forensics-api</artifactId>
      <!-- TODO: remove the version when a matching BOM is available -->
      <version>3.0.0</version>
    </dependency>
    <dependency>
      <groupId>io.jenkins.plugins</groupId>
      <artifactId>json-api</artifactId>
    </dependency>
    <dependency>
      <groupId>io.jenkins.plugins</groupId>
      <artifactId>json-path-api</artifactId>
    </dependency>

    <!-- AxivionSuite Dependencies -->
    <dependency>
      <groupId>org.jenkins-ci.plugins</groupId>
      <artifactId>credentials</artifactId>
    </dependency>
    <dependency>
      <groupId>org.jenkins-ci.plugins</groupId>
      <artifactId>apache-httpcomponents-client-4-api</artifactId>
    </dependency>
    <dependency>
      <groupId>io.jenkins.plugins</groupId>
      <artifactId>gson-api</artifactId>
    </dependency>

    <!-- Optional Jenkins Plug-in Dependencies -->
    <dependency>
      <groupId>org.jenkins-ci.plugins</groupId>
      <artifactId>matrix-project</artifactId>
      <optional>true</optional>
    </dependency>
    <dependency>
      <groupId>org.jenkins-ci.plugins</groupId>
      <artifactId>dashboard-view</artifactId>
      <optional>true</optional>
    </dependency>
    <dependency>
      <groupId>org.jenkins-ci.plugins</groupId>
      <artifactId>token-macro</artifactId>
      <optional>true</optional>
    </dependency>
    <dependency>
      <groupId>io.jenkins.plugins</groupId>
      <artifactId>pull-request-monitoring</artifactId>
      <version>${pull-request-monitoring.version}</version>
      <optional>true</optional>
    </dependency>

    <!-- ASM is required by token-macro but does not declare its dependency -->
    <dependency>
      <groupId>io.jenkins.plugins</groupId>
      <artifactId>asm-api</artifactId>
      <scope>test</scope>
    </dependency>

    <!-- Test Dependencies -->
    <dependency>
      <groupId>io.jenkins.plugins</groupId>
      <artifactId>forensics-api</artifactId>
      <classifier>tests</classifier>
      <!-- TODO: remove the version when a matching BOM is available -->
      <version>3.0.0</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>io.jenkins.plugins</groupId>
      <artifactId>git-forensics</artifactId>
      <!-- TODO: remove the version when a matching BOM is available -->
      <version>3.1.0</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.jenkins-ci.plugins</groupId>
      <artifactId>config-file-provider</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.jenkins-ci.plugins</groupId>
      <artifactId>git</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.jenkins-ci.plugins</groupId>
      <artifactId>git-client</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>edu.hm.hafner</groupId>
      <artifactId>analysis-model</artifactId>
      <version>${analysis-model-tests.version}</version>
      <classifier>tests</classifier>
      <scope>test</scope>
      <exclusions>
        <exclusion>
          <groupId>edu.hm.hafner</groupId>
          <artifactId>codingstyle</artifactId>
        </exclusion>
        <exclusion>
          <groupId>com.github.spotbugs</groupId>
          <artifactId>spotbugs-annotations</artifactId>
        </exclusion>
        <exclusion>
          <groupId>commons-io</groupId>
          <artifactId>commons-io</artifactId>
        </exclusion>
        <exclusion>
          <groupId>org.apache.commons</groupId>
          <artifactId>commons-lang3</artifactId>
        </exclusion>
        <exclusion>
          <groupId>jaxen</groupId>
          <artifactId>jaxen</artifactId>
        </exclusion>
        <exclusion>
          <groupId>org.ow2.asm</groupId>
          <artifactId>*</artifactId>
        </exclusion>
        <exclusion>
          <groupId>com.google.errorprone</groupId>
          <artifactId>error_prone_annotations</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>org.jenkins-ci.main</groupId>
      <artifactId>jenkins-test-harness-tools</artifactId>
      <version>2.2</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.xmlunit</groupId>
      <artifactId>xmlunit-assertj</artifactId>
      <version>${xmlunit.version}</version>
      <scope>test</scope>
      <exclusions>
        <exclusion>
          <groupId>net.bytebuddy</groupId>
          <artifactId>byte-buddy</artifactId>
        </exclusion>
        <exclusion>
          <groupId>jakarta.xml.bind</groupId>
          <artifactId>jakarta.xml.bind-api</artifactId>
        </exclusion>
      </exclusions>
    </dependency>

    <dependency>
      <groupId>io.jenkins.plugins</groupId>
      <artifactId>plugin-util-api</artifactId>
      <!-- TODO: remove the version when a matching BOM is available -->
      <version>6.0.0</version>
      <classifier>tests</classifier>
      <scope>test</scope>
      <exclusions>
        <exclusion>
          <groupId>com.google.errorprone</groupId>
          <artifactId>error_prone_annotations</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>io.jenkins.plugins</groupId>
      <artifactId>data-tables-api</artifactId>
      <classifier>tests</classifier>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>io.jenkins.plugins</groupId>
      <artifactId>checks-api</artifactId>
      <classifier>tests</classifier>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>org.testcontainers</groupId>
      <artifactId>testcontainers</artifactId>
      <version>${testcontainers.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.testcontainers</groupId>
      <artifactId>junit-jupiter</artifactId>
      <version>${testcontainers.version}</version>
      <scope>test</scope>
    </dependency>
    <!-- Form element path plugin to simplify location of UI elements in HtmlUnit tests -->
    <dependency>
      <groupId>org.jenkins-ci.plugins</groupId>
      <artifactId>form-element-path</artifactId>
      <version>${form-element-path.version}</version>
      <scope>test</scope>
    </dependency>

    <!-- Jenkins Plug-in Dependencies required for integration tests -->
    <dependency>
      <groupId>com.parasoft</groupId>
      <artifactId>parasoft-findings</artifactId>
      <version>10.7.5</version>
      <scope>test</scope>
      <exclusions>
        <exclusion>
          <groupId>io.jenkins.plugins</groupId>
          <artifactId>warnings-ng</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>org.jenkins-ci.plugins</groupId>
      <artifactId>flexible-publish</artifactId>
      <version>${flexible-publish.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.jenkins-ci.plugins</groupId>
      <artifactId>timestamper</artifactId>
      <scope>test</scope>
      <exclusions>
        <exclusion>
          <groupId>com.googlecode.owasp-java-html-sanitizer</groupId>
          <artifactId>owasp-java-html-sanitizer</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>org.jenkins-ci.main</groupId>
      <artifactId>maven-plugin</artifactId>
      <scope>test</scope>
      <exclusions>
        <exclusion>
          <groupId>com.google.code.findbugs</groupId>
          <artifactId>annotations</artifactId>
        </exclusion>
        <exclusion>
          <groupId>commons-net</groupId>
          <artifactId>commons-net</artifactId>
        </exclusion>
        <exclusion>
          <groupId>org.jenkins-ci</groupId>
          <artifactId>symbol-annotation</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>org.jenkins-ci.plugins</groupId>
      <artifactId>job-dsl</artifactId>
      <scope>test</scope>
      <exclusions>
        <exclusion>
          <groupId>xmlunit</groupId>
          <artifactId>xmlunit</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>io.jenkins</groupId>
      <artifactId>configuration-as-code</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.jenkins-ci.plugins</groupId>
      <artifactId>cloudbees-folder</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.jenkins-ci.plugins</groupId>
      <artifactId>ansicolor</artifactId>
      <version>1.0.5</version>
      <scope>test</scope>
    </dependency>

    <!-- stage -->
    <dependency>
      <groupId>org.jenkins-ci.plugins</groupId>
      <artifactId>pipeline-stage-step</artifactId>
      <scope>test</scope>
    </dependency>
    <!-- node -->
    <dependency>
      <groupId>org.jenkins-ci.plugins.workflow</groupId>
      <artifactId>workflow-durable-task-step</artifactId>
      <scope>test</scope>
    </dependency>
    <!-- recorder -> step -->
    <dependency>
      <groupId>org.jenkins-ci.plugins.workflow</groupId>
      <artifactId>workflow-basic-steps</artifactId>
      <scope>test</scope>
    </dependency>
    <!-- Docker Agents -->
    <dependency>
      <groupId>org.jenkins-ci.plugins</groupId>
      <artifactId>ssh-slaves</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.jenkins-ci.plugins</groupId>
      <artifactId>jdk-tool</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.jenkins-ci.plugins</groupId>
      <artifactId>scm-api</artifactId>
      <classifier>tests</classifier>
      <scope>test</scope>
    </dependency>

    <!-- Declarative Pipeline -->
    <dependency>
      <groupId>org.jenkins-ci.plugins.workflow</groupId>
      <artifactId>workflow-support</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.jenkinsci.plugins</groupId>
      <artifactId>pipeline-model-definition</artifactId>
      <scope>test</scope>
      <exclusions>
        <exclusion>
          <groupId>org.jenkins-ci.plugins</groupId>
          <artifactId>cloudbees-folder</artifactId>
        </exclusion>
      </exclusions>
    </dependency>

    <!-- JMH Benchmark -->
    <dependency>
      <groupId>org.openjdk.jmh</groupId>
      <artifactId>jmh-core</artifactId>
      <version>${jmh.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.openjdk.jmh</groupId>
      <artifactId>jmh-generator-annprocess</artifactId>
      <version>${jmh.version}</version>
      <scope>test</scope>
    </dependency>
  </dependencies>

  <repositories>
    <repository>
      <id>repo.jenkins-ci.org</id>
      <url>https://repo.jenkins-ci.org/public/</url>
    </repository>
    <repository>
      <id>incrementals.jenkins-ci.org</id>
      <url>https://repo.jenkins-ci.org/incrementals/</url>
    </repository>
  </repositories>

  <pluginRepositories>
    <pluginRepository>
      <id>repo.jenkins-ci.org</id>
      <url>https://repo.jenkins-ci.org/public/</url>
    </pluginRepository>
  </pluginRepositories>

  <build>
    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-release-plugin</artifactId>
          <configuration>
            <arguments>-Djenkins.test.timeout=2000</arguments>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.jacoco</groupId>
          <artifactId>jacoco-maven-plugin</artifactId>
          <version>${jacoco-maven-plugin.version}</version>
          <configuration>
            <excludes combine.children="append">
              <exclude>**/JenkinsFacade.*</exclude>
              <exclude>**/*BlameRunner.*</exclude>
              <exclude>**/*FilesScanner.*</exclude>
              <exclude>**/*Summary.class</exclude>
              <exclude>**/NullAnalysisHistory.*</exclude>
            </excludes>
          </configuration>
        </plugin>
      </plugins>
    </pluginManagement>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-pmd-plugin</artifactId>
        <configuration>
          <excludes combine.children="append">
            <exclude>**/DuplicateCodeScanner.java</exclude>
          </excludes>
        </configuration>
      </plugin>
      <plugin>
        <artifactId>maven-enforcer-plugin</artifactId>
        <executions>
          <execution>
            <id>display-info</id>
            <configuration>
              <rules>
                <requireUpperBoundDeps>
                  <level>WARN</level>
                </requireUpperBoundDeps>
              </rules>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.assertj</groupId>
        <artifactId>assertj-assertions-generator-maven-plugin</artifactId>
        <configuration>
          <packages>
            <package>io.jenkins.plugins.analysis.core.columns</package>
            <package>io.jenkins.plugins.analysis.core.scm</package>
            <package>io.jenkins.plugins.analysis.core.model</package>
            <package>io.jenkins.plugins.analysis.core.util</package>
            <package>io.jenkins.plugins.analysis.warnings</package>
          </packages>
          <excludes combine.children="append">
            <exclude>.*Thresholds</exclude>
            <exclude>.*Test.*</exclude>
            <exclude>.*Benchmark.*</exclude>
            <exclude>.*TaskScanner.*</exclude>
          </excludes>
          <entryPointClassPackage>io.jenkins.plugins.analysis.core.assertions</entryPointClassPackage>
        </configuration>
      </plugin>
      <plugin>
        <groupId>com.github.spotbugs</groupId>
        <artifactId>spotbugs-maven-plugin</artifactId>
        <executions>
          <execution>
            <id>spotbugs</id>
            <phase>none</phase>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.revapi</groupId>
        <artifactId>revapi-maven-plugin</artifactId>
        <configuration>
          <skip>true</skip>
        </configuration>
      </plugin>
    </plugins>
  </build>

  <profiles>
    <profile>
      <id>benchmark</id>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <configuration>
              <excludes>
                <exclude>**/*Test.java</exclude>
              </excludes>
              <includes>
                <include>**/*Benchmark.java</include>
              </includes>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>fast</id>
      <properties>
        <skipTests>true</skipTests>
        <skipITs>true</skipITs>
      </properties>
    </profile>
  </profiles>

</project>
