<?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/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>org.glowroot</groupId>
  <artifactId>glowroot-parent</artifactId>
  <version>0.14.0-beta</version>
  <packaging>pom</packaging>

  <name>Glowroot Parent Project</name>
  <description>Glowroot Parent Project</description>
  <url>https://github.com/glowroot/glowroot</url>
  <inceptionYear>2011</inceptionYear>
  <organization>
    <name>Glowroot contributors</name>
    <url>https://github.com/glowroot</url>
  </organization>
  <licenses>
    <license>
      <name>The Apache Software License, Version 2.0</name>
      <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
      <distribution>repo</distribution>
    </license>
  </licenses>
  <developers>
    <developer>
      <name>Trask Stalnaker</name>
      <email>trask.stalnaker@gmail.com</email>
    </developer>
  </developers>

  <modules>
    <module>build/license-bundle</module>
    <module>build/multi-lib-tests</module>
    <module>common</module>
    <module>common2</module>
    <module>wire-api</module>
    <module>ui</module>
    <module>agent/api</module>
    <module>agent/plugin-api</module>
    <module>agent/bytecode-api</module>
    <module>agent/core</module>
    <module>agent/embedded</module>
    <module>agent/it-harness</module>
    <module>agent/shaded/embedded</module>
    <module>agent/shaded/core</module>
    <module>agent/shaded/it-harness</module>
    <module>agent/shaded/central-https-linux</module>
    <module>agent/shaded/central-https-windows</module>
    <module>agent/shaded/central-https-osx</module>
    <module>agent/shaded/logging-logstash</module>
    <module>agent/integration-tests</module>
    <module>agent/plugins/camel-plugin</module>
    <module>agent/plugins/cassandra-plugin</module>
    <module>agent/plugins/ejb-plugin</module>
    <module>agent/plugins/elasticsearch-plugin</module>
    <module>agent/plugins/executor-plugin</module>
    <module>agent/plugins/grails-plugin</module>
    <module>agent/plugins/hibernate-plugin</module>
    <module>agent/plugins/http-client-plugin</module>
    <module>agent/plugins/java-http-server-plugin</module>
    <module>agent/plugins/jaxrs-plugin</module>
    <module>agent/plugins/jaxws-plugin</module>
    <module>agent/plugins/jdbc-plugin</module>
    <module>agent/plugins/jms-plugin</module>
    <module>agent/plugins/jsf-plugin</module>
    <module>agent/plugins/jsp-plugin</module>
    <module>agent/plugins/kafka-plugin</module>
    <module>agent/plugins/logger-plugin</module>
    <module>agent/plugins/mail-plugin</module>
    <module>agent/plugins/mongodb-plugin</module>
    <module>agent/plugins/netty-plugin</module>
    <module>agent/plugins/play-plugin</module>
    <module>agent/plugins/quartz-plugin</module>
    <module>agent/plugins/redis-plugin</module>
    <module>agent/plugins/servlet-plugin</module>
    <module>agent/plugins/spring-plugin</module>
    <module>agent/plugins/struts-plugin</module>
    <module>agent/benchmarks</module>
    <module>agent/ui-sandbox</module>
    <module>agent/dist-maven-plugin</module>
    <module>agent/dist</module>
  </modules>

  <scm>
    <connection>scm:git:https://github.com/glowroot/glowroot.git</connection>
    <developerConnection>scm:git:git@github.com:glowroot/glowroot.git</developerConnection>
    <url>https://github.com/glowroot/glowroot</url>
  </scm>

  <properties>
    <grpc.version>1.41.0</grpc.version>
    <protobuf.version>3.18.1</protobuf.version>
    <protoc.version>3.18.1</protoc.version>
    <!-- need to stick to netty version that is used by grpc version above -->
    <netty.version>4.1.52.Final</netty.version>
    <logback.version>1.2.3</logback.version>
    <slf4j.version>1.7.30</slf4j.version>
    <immutables.version>2.8.8</immutables.version>
    <checker.version>3.18.1</checker.version>
    <jmh.version>1.23</jmh.version>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <maven.build.timestamp.format>yyyy-MM-dd HH:mm:ss Z</maven.build.timestamp.format>
    <!-- the sonar.login system property is set here instead of on the command line so it is
      not visible to ps -->
    <sonar.login>${env.SONAR_LOGIN}</sonar.login>
    <glowroot.build.commit>[none]</glowroot.build.commit>
  </properties>

  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>org.immutables</groupId>
        <artifactId>value</artifactId>
        <version>${immutables.version}</version>
      </dependency>
      <dependency>
        <groupId>org.immutables</groupId>
        <artifactId>builder</artifactId>
        <version>${immutables.version}</version>
      </dependency>
      <dependency>
        <groupId>com.google.protobuf</groupId>
        <artifactId>protobuf-java</artifactId>
        <version>${protobuf.version}</version>
      </dependency>
      <dependency>
        <groupId>com.google.protobuf</groupId>
        <artifactId>protobuf-java-util</artifactId>
        <version>${protobuf.version}</version>
      </dependency>
      <dependency>
        <groupId>io.grpc</groupId>
        <artifactId>grpc-core</artifactId>
        <version>${grpc.version}</version>
      </dependency>
      <dependency>
        <groupId>io.grpc</groupId>
        <artifactId>grpc-stub</artifactId>
        <version>${grpc.version}</version>
      </dependency>
      <dependency>
        <groupId>io.grpc</groupId>
        <artifactId>grpc-protobuf</artifactId>
        <version>${grpc.version}</version>
      </dependency>
      <dependency>
        <groupId>io.grpc</groupId>
        <artifactId>grpc-netty</artifactId>
        <version>${grpc.version}</version>
      </dependency>
      <dependency>
        <groupId>com.google.code.gson</groupId>
        <artifactId>gson</artifactId>
        <version>2.8.6</version>
      </dependency>
      <dependency>
        <groupId>com.google.code.findbugs</groupId>
        <artifactId>jsr305</artifactId>
        <version>3.0.2</version>
      </dependency>
      <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>${slf4j.version}</version>
      </dependency>
      <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-core</artifactId>
        <version>${logback.version}</version>
      </dependency>
      <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-classic</artifactId>
        <version>${logback.version}</version>
      </dependency>
      <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.13</version>
      </dependency>
      <dependency>
        <groupId>com.google.guava</groupId>
        <artifactId>guava</artifactId>
        <version>31.0.1-jre</version>
      </dependency>
      <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-core</artifactId>
        <version>2.13.0</version>
      </dependency>
      <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>2.13.0</version>
      </dependency>
      <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-annotations</artifactId>
        <version>2.13.0</version>
      </dependency>
      <dependency>
        <groupId>com.fasterxml.jackson.datatype</groupId>
        <artifactId>jackson-datatype-guava</artifactId>
        <version>2.13.0</version>
      </dependency>
      <dependency>
        <groupId>org.checkerframework</groupId>
        <artifactId>checker-qual</artifactId>
        <version>${checker.version}</version>
      </dependency>
      <dependency>
        <groupId>com.google.errorprone</groupId>
        <artifactId>error_prone_annotations</artifactId>
        <version>2.9.0</version>
      </dependency>
      <dependency>
        <groupId>org.assertj</groupId>
        <artifactId>assertj-core</artifactId>
        <!-- assertj 2.0.0+ requires Java 7+ -->
        <version>1.7.1</version>
      </dependency>
      <dependency>
        <groupId>org.mockito</groupId>
        <artifactId>mockito-core</artifactId>
        <version>3.2.4</version>
      </dependency>
      <dependency>
        <groupId>com.ning</groupId>
        <artifactId>async-http-client</artifactId>
        <!-- async-http-client 1.9.0+ requires Java 7+ -->
        <version>1.8.17</version>
      </dependency>
      <dependency>
        <groupId>org.openjdk.jmh</groupId>
        <artifactId>jmh-core</artifactId>
        <version>${jmh.version}</version>
      </dependency>
      <dependency>
        <groupId>org.openjdk.jmh</groupId>
        <artifactId>jmh-generator-annprocess</artifactId>
        <version>${jmh.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.tomcat.embed</groupId>
        <artifactId>tomcat-embed-core</artifactId>
        <version>8.5.72</version>
      </dependency>
      <dependency>
        <groupId>org.apache.tomcat.embed</groupId>
        <artifactId>tomcat-embed-jasper</artifactId>
        <version>8.5.72</version>
      </dependency>
      <dependency>
        <groupId>org.apache.tomcat.embed</groupId>
        <artifactId>tomcat-embed-websocket</artifactId>
        <version>8.5.72</version>
      </dependency>
    </dependencies>
  </dependencyManagement>

  <distributionManagement>
    <snapshotRepository>
      <id>ossrh</id>
      <url>https://oss.sonatype.org/content/repositories/snapshots</url>
    </snapshotRepository>
  </distributionManagement>

  <build>
    <plugins>
      <plugin>
        <artifactId>maven-enforcer-plugin</artifactId>
        <executions>
          <execution>
            <goals>
              <goal>enforce</goal>
            </goals>
            <configuration>
              <rules>
                <requireJavaVersion>
                  <!-- immutables annotation processors require java 7+ -->
                  <version>[1.7,)</version>
                </requireJavaVersion>
                <requireMavenVersion>
                  <version>[3.3.1,)</version>
                </requireMavenVersion>
                <requireUpperBoundDeps>
                  <excludes>
                    <!-- Exclude until infinispan-core 10.0 is released -->
                    <exclude>org.jgroups:jgroups</exclude>
                  </excludes>
                </requireUpperBoundDeps>
              </rules>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <artifactId>maven-source-plugin</artifactId>
        <executions>
          <execution>
            <goals>
              <goal>jar-no-fork</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <!-- ensure that only methods available in jdk 8 can be used even when compiling with a more
          recent jdk -->
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>animal-sniffer-maven-plugin</artifactId>
        <version>1.17</version>
        <configuration>
          <signature>
            <groupId>org.codehaus.mojo.signature</groupId>
            <artifactId>java18</artifactId>
            <version>1.0</version>
          </signature>
        </configuration>
        <executions>
          <execution>
            <phase>process-classes</phase>
            <goals>
              <goal>check</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.sonatype.plugins</groupId>
        <artifactId>nexus-staging-maven-plugin</artifactId>
        <version>1.6.8</version>
        <extensions>true</extensions>
        <configuration>
          <serverId>ossrh</serverId>
          <nexusUrl>https://oss.sonatype.org/</nexusUrl>
        </configuration>
      </plugin>
    </plugins>
    <pluginManagement>
      <plugins>
        <plugin>
          <artifactId>maven-antrun-plugin</artifactId>
          <version>1.8</version>
        </plugin>
        <plugin>
          <artifactId>maven-assembly-plugin</artifactId>
          <version>3.2.0</version>
        </plugin>
        <plugin>
          <artifactId>maven-clean-plugin</artifactId>
          <version>3.1.0</version>
        </plugin>
        <plugin>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.8.1</version>
          <configuration>
            <source>1.8</source>
            <target>1.8</target>
            <!-- prevents endPosTable exception for maven compile due to annotation processing,
              see http://immutables.github.io/getstarted.html -->
            <useIncrementalCompilation>false</useIncrementalCompilation>
          </configuration>
        </plugin>
        <plugin>
          <artifactId>maven-dependency-plugin</artifactId>
          <version>3.1.1</version>
        </plugin>
        <plugin>
          <artifactId>maven-deploy-plugin</artifactId>
          <version>3.0.0-M1</version>
          <configuration>
            <deployAtEnd>true</deployAtEnd>
          </configuration>
        </plugin>
        <plugin>
          <artifactId>maven-enforcer-plugin</artifactId>
          <version>3.0.0-M3</version>
        </plugin>
        <plugin>
          <artifactId>maven-failsafe-plugin</artifactId>
          <version>3.0.0-M4</version>
          <configuration>
            <systemPropertyVariables>
              <glowroot.test.fileLoggingOnly>true</glowroot.test.fileLoggingOnly>
            </systemPropertyVariables>
            <!-- the default of trimming stack trace to only lines within the test
              makes it difficult to diagnose sporadic travis build failures -->
            <trimStackTrace>false</trimStackTrace>
          </configuration>
        </plugin>
        <plugin>
          <artifactId>maven-install-plugin</artifactId>
          <version>3.0.0-M1</version>
        </plugin>
        <plugin>
          <artifactId>maven-jar-plugin</artifactId>
          <version>3.2.0</version>
          <configuration>
            <archive>
              <manifestEntries>
                <Implementation-Title>${project.name}</Implementation-Title>
                <Implementation-Version>${project.version}</Implementation-Version>
                <Build-Commit>${glowroot.build.commit}</Build-Commit>
              </manifestEntries>
              <addMavenDescriptor>false</addMavenDescriptor>
            </archive>
          </configuration>
        </plugin>
        <plugin>
          <artifactId>maven-javadoc-plugin</artifactId>
          <version>3.1.1</version>
        </plugin>
        <plugin>
          <artifactId>maven-plugin-plugin</artifactId>
          <version>3.6.0</version>
        </plugin>
        <plugin>
          <artifactId>maven-remote-resources-plugin</artifactId>
          <version>1.7.0</version>
        </plugin>
        <plugin>
          <artifactId>maven-resources-plugin</artifactId>
          <version>3.1.0</version>
        </plugin>
        <plugin>
          <artifactId>maven-shade-plugin</artifactId>
          <version>3.2.1</version>
        </plugin>
        <plugin>
          <artifactId>maven-site-plugin</artifactId>
          <version>3.8.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-source-plugin</artifactId>
          <version>3.2.1</version>
        </plugin>
        <plugin>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>3.0.0-M4</version>
          <configuration>
            <systemPropertyVariables>
              <glowroot.test.fileLoggingOnly>true</glowroot.test.fileLoggingOnly>
            </systemPropertyVariables>
            <!-- the default of trimming stack trace to only lines within the test
              makes it difficult to diagnose sporadic travis build failures -->
            <trimStackTrace>false</trimStackTrace>
          </configuration>
        </plugin>
        <plugin>
          <groupId>com.github.wvengen</groupId>
          <artifactId>proguard-maven-plugin</artifactId>
          <version>2.5.1</version>
        </plugin>
        <plugin>
          <groupId>com.github.os72</groupId>
          <artifactId>protoc-jar-maven-plugin</artifactId>
          <version>3.11.1</version>
        </plugin>
        <plugin>
          <groupId>org.sonarsource.scanner.maven</groupId>
          <artifactId>sonar-maven-plugin</artifactId>
          <version>3.7.0.1746</version>
        </plugin>
        <plugin>
          <groupId>org.codehaus.mojo</groupId>
          <artifactId>build-helper-maven-plugin</artifactId>
          <version>3.0.0</version>
        </plugin>
        <plugin>
          <groupId>org.jacoco</groupId>
          <artifactId>jacoco-maven-plugin</artifactId>
          <version>0.8.5</version>
        </plugin>
        <plugin>
          <groupId>org.eclipse.m2e</groupId>
          <artifactId>lifecycle-mapping</artifactId>
          <version>1.0.0</version>
          <configuration>
            <lifecycleMappingMetadata>
              <pluginExecutions>
                <pluginExecution>
                  <pluginExecutionFilter>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-antrun-plugin</artifactId>
                    <versionRange>[1.0.0,)</versionRange>
                    <goals>
                      <goal>run</goal>
                    </goals>
                  </pluginExecutionFilter>
                  <action>
                    <ignore />
                  </action>
                </pluginExecution>
                <pluginExecution>
                  <pluginExecutionFilter>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-plugin-plugin</artifactId>
                    <versionRange>[1.0.0,)</versionRange>
                    <goals>
                      <goal>descriptor</goal>
                    </goals>
                  </pluginExecutionFilter>
                  <action>
                    <ignore />
                  </action>
                </pluginExecution>
                <pluginExecution>
                  <pluginExecutionFilter>
                    <groupId>org.glowroot</groupId>
                    <artifactId>glowroot-agent-dist-maven-plugin</artifactId>
                    <versionRange>[0.9,)</versionRange>
                    <goals>
                      <goal>generate</goal>
                    </goals>
                  </pluginExecutionFilter>
                  <action>
                    <ignore />
                  </action>
                </pluginExecution>
              </pluginExecutions>
            </lifecycleMappingMetadata>
          </configuration>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>

  <profiles>
    <profile>
      <id>auto-activated-java-8</id>
      <activation>
        <jdk>[1.8,)</jdk>
      </activation>
      <modules>
        <module>central</module>
        <!-- selenium 3.0.0+ requires Java 8+ -->
        <module>webdriver-tests</module>
      </modules>
    </profile>
    <profile>
      <id>auto-activated-java-9</id>
      <activation>
        <jdk>[9,)</jdk>
      </activation>
      <build>
        <pluginManagement>
          <plugins>
            <plugin>
              <groupId>com.github.wvengen</groupId>
              <artifactId>proguard-maven-plugin</artifactId>
              <configuration>
                <libs>
                  <lib>${java.home}/jmods/java.base.jmod</lib>
                  <!-- java.sql.jmod is needed for glowroot-agent-embedded -->
                  <lib>${java.home}/jmods/java.sql.jmod</lib>
                </libs>
              </configuration>
            </plugin>
          </plugins>
        </pluginManagement>
      </build>
    </profile>
    <profile>
      <id>auto-activated-not-apple-jdk</id>
      <activation>
        <file>
          <exists>${java.home}/lib/rt.jar</exists>
        </file>
      </activation>
      <build>
        <pluginManagement>
          <plugins>
            <plugin>
              <groupId>com.github.wvengen</groupId>
              <artifactId>proguard-maven-plugin</artifactId>
              <configuration>
                <libs>
                  <lib>${java.home}/lib/rt.jar</lib>
                </libs>
              </configuration>
            </plugin>
          </plugins>
        </pluginManagement>
      </build>
    </profile>
    <profile>
      <id>auto-activated-apple-jdk</id>
      <activation>
        <file>
          <exists>${java.home}/../Classes/classes.jar</exists>
        </file>
      </activation>
      <build>
        <pluginManagement>
          <plugins>
            <plugin>
              <groupId>com.github.wvengen</groupId>
              <artifactId>proguard-maven-plugin</artifactId>
              <configuration>
                <libs>
                  <lib>${java.home}/../Classes/classes.jar</lib>
                </libs>
              </configuration>
            </plugin>
          </plugins>
        </pluginManagement>
      </build>
    </profile>
    <profile>
      <id>auto-actived-add-license-jar-bundle</id>
      <activation>
        <file>
          <!-- only add license jar bundle to projects that are building a jar file -->
          <exists>${basedir}/src/main/java</exists>
        </file>
      </activation>
      <build>
        <plugins>
          <plugin>
            <artifactId>maven-remote-resources-plugin</artifactId>
            <executions>
              <execution>
                <phase>generate-resources</phase>
                <goals>
                  <goal>process</goal>
                </goals>
                <configuration>
                  <resourceBundles>
                    <resourceBundle>
                      org.glowroot.build:glowroot-build-license-bundle:${project.version}
                    </resourceBundle>
                  </resourceBundles>
                </configuration>
              </execution>
            </executions>
            <dependencies>
              <dependency>
                <groupId>org.glowroot.build</groupId>
                <artifactId>glowroot-build-license-bundle</artifactId>
                <version>${project.version}</version>
              </dependency>
            </dependencies>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>javadoc</id>
      <build>
        <plugins>
          <plugin>
            <artifactId>maven-javadoc-plugin</artifactId>
            <configuration>
              <!-- exclude deprecated api from javadoc -->
              <nodeprecated>true</nodeprecated>
            </configuration>
            <executions>
              <execution>
                <goals>
                  <goal>jar</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>release</id>
      <build>
        <plugins>
          <plugin>
            <artifactId>maven-gpg-plugin</artifactId>
            <version>1.6</version>
            <executions>
              <execution>
                <phase>verify</phase>
                <goals>
                  <goal>sign</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
          <plugin>
            <artifactId>maven-enforcer-plugin</artifactId>
            <configuration>
              <rules>
                <requireReleaseDeps />
                <requireReleaseVersion />
                <requirePluginVersions />
              </rules>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>errorprone</id>
      <build>
        <plugins>
          <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
              <compilerId>javac-with-errorprone</compilerId>
              <forceJavacCompilerUse>true</forceJavacCompilerUse>
              <showWarnings>true</showWarnings>
              <compilerArgs>
                <arg>-XepExcludedPaths:.*/target/generated-sources/.*</arg>
                <!-- needed to suppress "bootstrap class path not set in conjunction with -source 1.6" -->
                <arg>-Xlint:-options</arg>
              </compilerArgs>
            </configuration>
            <dependencies>
              <dependency>
                <groupId>org.codehaus.plexus</groupId>
                <artifactId>plexus-compiler-javac-errorprone</artifactId>
                <version>2.8.5</version>
              </dependency>
              <!-- override plexus-compiler-javac-errorprone's dependency on
                   Error Prone with the latest version -->
              <dependency>
                <groupId>com.google.errorprone</groupId>
                <artifactId>error_prone_core</artifactId>
                <version>2.3.2</version>
              </dependency>
            </dependencies>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <!-- this is used by multi-lib-tests to recompile tests classes without recompiling main classes -->
      <id>compile-test-classes-only</id>
      <build>
        <pluginManagement>
          <plugins>
            <plugin>
              <artifactId>maven-clean-plugin</artifactId>
              <configuration>
                <excludeDefaultDirectories>true</excludeDefaultDirectories>
                <filesets>
                  <fileset>
                    <directory>${project.build.testOutputDirectory}</directory>
                  </fileset>
                  <fileset>
                    <!-- this is needed to force scala recompilation (used in glowroot-agent-play-plugin) -->
                    <directory>${project.build.directory}</directory>
                    <includes>
                      <include>test-classes.*.timestamp</include>
                    </includes>
                  </fileset>
                </filesets>
              </configuration>
            </plugin>
            <plugin>
              <artifactId>maven-compiler-plugin</artifactId>
              <configuration>
                <skipMain>true</skipMain>
                <proc>none</proc>
              </configuration>
            </plugin>
          </plugins>
        </pluginManagement>
      </build>
    </profile>
    <profile>
      <!-- this is used by multi-lib-tests to guard against running with wrong (and non-existent) profile -->
      <id>fail-failsafe-if-no-tests</id>
      <build>
        <pluginManagement>
          <plugins>
            <plugin>
              <artifactId>maven-failsafe-plugin</artifactId>
              <configuration>
                <failIfNoTests>true</failIfNoTests>
              </configuration>
            </plugin>
          </plugins>
        </pluginManagement>
      </build>
    </profile>
    <profile>
      <!-- use "travis-build/travis-build.sh checker" to execute this profile -->
      <id>the-checker-build</id>
      <activation>
        <property>
          <name>glowroot.checker.build</name>
        </property>
      </activation>
      <dependencies>
        <dependency>
          <groupId>org.checkerframework</groupId>
          <artifactId>checker-qual</artifactId>
          <version>${checker.version}</version>
          <optional>true</optional>
        </dependency>
        <dependency>
          <groupId>org.checkerframework</groupId>
          <artifactId>checker</artifactId>
          <version>${checker.version}</version>
          <optional>true</optional>
        </dependency>
        <dependency>
          <groupId>org.checkerframework</groupId>
          <artifactId>jdk8</artifactId>
          <version>${checker.version}</version>
          <optional>true</optional>
        </dependency>
        <dependency>
          <!-- not all modules have dependency on immutables (e.g. jdbc-plugin) but need it on
            the classpath for the explicit annotation processing setup below -->
          <groupId>org.immutables</groupId>
          <artifactId>value</artifactId>
          <version>${immutables.version}</version>
        </dependency>
      </dependencies>
      <build>
        <plugins>
          <plugin>
            <artifactId>maven-enforcer-plugin</artifactId>
            <executions>
              <execution>
                <goals>
                  <goal>enforce</goal>
                </goals>
                <configuration>
                  <rules>
                    <requireJavaVersion>
                      <version>[1.8,)</version>
                    </requireJavaVersion>
                  </rules>
                </configuration>
              </execution>
            </executions>
          </plugin>
          <plugin>
            <artifactId>maven-dependency-plugin</artifactId>
            <executions>
              <execution>
                <goals>
                  <goal>properties</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
          <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
              <source>1.8</source>
              <target>1.8</target>
              <maxmem>512m</maxmem>
              <annotationProcessors>
                <annotationProcessor>
                  org.immutables.value.internal.$processor$.$Processor
                </annotationProcessor>
                <annotationProcessor>
                  org.checkerframework.checker.nullness.NullnessChecker
                </annotationProcessor>
                <annotationProcessor>
                  org.checkerframework.checker.tainting.TaintingChecker
                </annotationProcessor>
              </annotationProcessors>
              <compilerArgs>
                <arg>-Xbootclasspath/p:${org.checkerframework:jdk8:jar}</arg>
                <!-- checker.stubs.dir needs to be absolute path since relative path will be
                  interpreted from each module directory -->
                <arg>-Astubs=${checker.stubs.dir}</arg>
                <arg>-AskipDefs=^org\.glowroot\.agent\.embedded\.repo\.proto\.|^org\.glowroot\.agent\.it\.harness\.grpc\.|^org\.glowroot\.central\.repo\.proto\.</arg>
              </compilerArgs>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
  </profiles>
</project>
