zipkin-server
Used in:
components
- OverviewOverview
- VersionsVersions
- DependentsDependents
- DependenciesDependencies
<dependency>
<groupId>io.zipkin</groupId>
<artifactId>zipkin-server</artifactId>
<version>3.5.1</version>
</dependency><?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright The OpenZipkin Authors
SPDX-License-Identifier: Apache-2.0
-->
<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>
<parent>
<groupId>io.zipkin</groupId>
<artifactId>zipkin-parent</artifactId>
<version>3.5.1</version>
</parent>
<artifactId>zipkin-server</artifactId>
<name>Zipkin Server</name>
<properties>
<main.basedir>${project.basedir}/..</main.basedir>
<!-- Spring Boot 3 requires JRE 17 -->
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
<maven.compiler.release>17</maven.compiler.release>
<!-- Sometimes we need to override Armeria's Brave version -->
<brave.version>6.1.0</brave.version>
<zipkin-reporter.version>3.5.0</zipkin-reporter.version>
<log4j.version>2.23.1</log4j.version>
<proto.generatedSourceDirectory>${project.build.directory}/generated-test-sources/wire</proto.generatedSourceDirectory>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-bom</artifactId>
<version>${log4j.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-bom</artifactId>
<version>${netty.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>io.zipkin.brave</groupId>
<artifactId>brave-bom</artifactId>
<version>${brave.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson</groupId>
<artifactId>jackson-bom</artifactId>
<version>${jackson.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- reconcile armeria and spring-boot versions -->
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-bom</artifactId>
<version>${micrometer.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<!-- Makes sure spring doesn't eagerly bind tomcat or slf4j -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<version>${spring-boot.version}</version>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
<version>${spring-boot.version}</version>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
<!-- We only include a couple actuator endpoints, and metrics are served directly -->
<exclusion>
<groupId>io.micrometer</groupId>
<artifactId>*</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- module support requires org.springframework.boot.loader.launch.PropertiesLauncher
From version 3, this is no longer included in spring-boot-starter. -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-loader-classic</artifactId>
<version>${spring-boot.version}</version>
</dependency>
<!-- Use log4j 2 as default logging implementation -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
<version>${spring-boot.version}</version>
</dependency>
<!-- More efficient, gRPC ready server with brave tracing built-in -->
<dependency>
<groupId>com.linecorp.armeria</groupId>
<artifactId>armeria-spring-boot3-autoconfigure</artifactId>
<version>${armeria.version}</version>
<exclusions>
<exclusion>
<groupId>com.linecorp.armeria</groupId>
<artifactId>armeria-logback</artifactId>
</exclusion>
<exclusion>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.linecorp.armeria</groupId>
<artifactId>armeria-brave6</artifactId>
<version>${armeria.version}</version>
</dependency>
<dependency>
<groupId>com.linecorp.armeria</groupId>
<artifactId>armeria-grpc-protocol</artifactId>
<version>${armeria.version}</version>
</dependency>
<!-- Eureka service discovery -->
<dependency>
<groupId>com.linecorp.armeria</groupId>
<artifactId>armeria-eureka</artifactId>
<version>${armeria.version}</version>
</dependency>
<!--Prometheus metrics-->
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-prometheus</artifactId>
</dependency>
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-prometheus-simpleclient</artifactId>
</dependency>
<dependency>
<groupId>com.netflix.concurrency-limits</groupId>
<artifactId>concurrency-limits-core</artifactId>
<version>0.5.3</version>
</dependency>
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-core</artifactId>
</dependency>
<dependency>
<groupId>${project.groupId}.zipkin2</groupId>
<artifactId>zipkin</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>${project.groupId}.zipkin2</groupId>
<artifactId>zipkin-collector</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${slf4j.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jul-to-slf4j</artifactId>
<version>${slf4j.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
<version>${slf4j.version}</version>
</dependency>
<!-- the "exec" jar will exclude this -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>${slf4j.version}</version>
<scope>provided</scope>
</dependency>
<!-- the "slim" jar will exclude this -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<scope>provided</scope>
</dependency>
<!-- Optional, but packaged in the supported distribution -->
<!-- Cassandra backend -->
<dependency>
<groupId>${project.groupId}.zipkin2</groupId>
<artifactId>zipkin-storage-cassandra</artifactId>
<version>${project.version}</version>
<optional>true</optional>
</dependency>
<!-- Elasticsearch http -->
<dependency>
<groupId>${project.groupId}.zipkin2</groupId>
<artifactId>zipkin-storage-elasticsearch</artifactId>
<version>${project.version}</version>
<optional>true</optional>
</dependency>
<!-- MySQL backend -->
<dependency>
<groupId>${project.groupId}.zipkin2</groupId>
<artifactId>zipkin-storage-mysql-v1</artifactId>
<version>${project.version}</version>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.mariadb.jdbc</groupId>
<artifactId>mariadb-java-client</artifactId>
<version>${mariadb-java-client.version}</version>
<optional>true</optional>
</dependency>
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
<version>${HikariCP.version}</version>
<optional>true</optional>
</dependency>
<!-- ActiveMQ Collector -->
<dependency>
<groupId>${project.groupId}.zipkin2</groupId>
<artifactId>zipkin-collector-activemq</artifactId>
<version>${project.version}</version>
<optional>true</optional>
</dependency>
<!-- Kafka Collector -->
<dependency>
<groupId>${project.groupId}.zipkin2</groupId>
<artifactId>zipkin-collector-kafka</artifactId>
<version>${project.version}</version>
<optional>true</optional>
</dependency>
<!-- RabbitMQ Collector -->
<dependency>
<groupId>${project.groupId}.zipkin2</groupId>
<artifactId>zipkin-collector-rabbitmq</artifactId>
<version>${project.version}</version>
<optional>true</optional>
</dependency>
<!-- Scribe Collector -->
<dependency>
<groupId>${project.groupId}.zipkin2</groupId>
<artifactId>zipkin-collector-scribe</artifactId>
<version>${project.version}</version>
<optional>true</optional>
</dependency>
<!-- Pulsar Collector -->
<dependency>
<groupId>${project.groupId}.zipkin2</groupId>
<artifactId>zipkin-collector-pulsar</artifactId>
<version>${project.version}</version>
<optional>true</optional>
</dependency>
<!-- Trace api controller activity with Brave -->
<dependency>
<groupId>io.zipkin.brave</groupId>
<artifactId>brave</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>io.zipkin.brave</groupId>
<artifactId>brave-context-slf4j</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>io.zipkin.reporter2</groupId>
<artifactId>zipkin-reporter-brave</artifactId>
<version>${zipkin-reporter.version}</version>
<optional>true</optional>
</dependency>
<!-- <dependency>-->
<!-- <groupId>io.zipkin.brave.cassandra</groupId>-->
<!-- <artifactId>brave-instrumentation-cassandra-driver</artifactId>-->
<!-- <version>0.10.3</version>-->
<!-- <optional>true</optional>-->
<!-- </dependency>-->
<!-- Test dependencies -->
<!-- to test the experimental grpc endpoint with the square/wire library -->
<dependency>
<groupId>io.zipkin.proto3</groupId>
<artifactId>zipkin-proto3</artifactId>
<version>${zipkin-proto3.version}</version>
<scope>test</scope>
</dependency>
<!-- Our json codec is shaded, but Intellij doesn't understand that when running tests. -->
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>${gson.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.squareup.wire</groupId>
<artifactId>wire-runtime-jvm</artifactId>
<version>${wire.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
<version>${okhttp.version}</version>
<scope>test</scope>
<exclusions>
<!-- let wire control the okio version -->
<exclusion>
<groupId>com.squareup.okio</groupId>
<artifactId>okio</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>${junit-jupiter.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.linecorp.armeria</groupId>
<artifactId>armeria-junit5</artifactId>
<version>${armeria.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.testcontainers</groupId>
<artifactId>junit-jupiter</artifactId>
<version>${testcontainers.version}</version>
<scope>test</scope>
</dependency>
<!-- Don't use spring-boot-starter-test as it complicates the dependency tree and causes heavier
downloads. We only need the spring-provided libraries -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-test-autoconfigure</artifactId>
<version>${spring-boot.version}</version>
<exclusions>
<exclusion>
<groupId>*</groupId>
<artifactId>*</artifactId>
</exclusion>
</exclusions>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-test</artifactId>
<version>${spring-boot.version}</version>
<exclusions>
<exclusion>
<groupId>*</groupId>
<artifactId>*</artifactId>
</exclusion>
</exclusions>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${spring.version}</version>
<scope>test</scope>
</dependency>
<!-- Needed by ZipkinHttpClientSender -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${spring.version}</version>
<exclusions>
<exclusion>
<groupId>*</groupId>
<artifactId>*</artifactId>
</exclusion>
</exclusions>
<scope>test</scope>
</dependency>
<dependency>
<groupId>${project.groupId}.zipkin2</groupId>
<artifactId>zipkin-tests</artifactId>
<version>${project.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.awaitility</groupId>
<artifactId>awaitility</artifactId>
<version>${awaitility.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.jayway.jsonpath</groupId>
<artifactId>json-path</artifactId>
<version>2.9.0</version>
<scope>test</scope>
</dependency>
<!-- Main code uses jul and tests log with log4j -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-jul</artifactId>
<scope>test</scope>
</dependency>
<!-- Don't add log4j-slf4j-impl as simplelogger is in the classpath! -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-1.2-api</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<profiles>
<profile>
<id>actuator</id>
<activation>
<property>
<name>!skipActuator</name>
</property>
</activation>
<dependencies>
<!-- /actuator endpoints -->
<dependency>
<groupId>com.linecorp.armeria</groupId>
<artifactId>armeria-spring-boot3-actuator-autoconfigure</artifactId>
<version>${armeria.version}</version>
<optional>true</optional>
</dependency>
</dependencies>
</profile>
<profile>
<id>include-lens</id>
<activation>
<property>
<name>!skipLens</name>
</property>
</activation>
<dependencies>
<!-- Static content for the Lens UI -->
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>zipkin-lens</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
</profile>
</profiles>
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
<plugins>
<!-- wire-maven-plugin cannot get proto definitions from dependencies, so we will -->
<plugin>
<artifactId>maven-dependency-plugin</artifactId>
</plugin>
<!-- Ensure jul -> log4j -->
<plugin>
<artifactId>maven-failsafe-plugin</artifactId>
<configuration>
<systemPropertyVariables>
<java.util.logging.manager>org.apache.logging.log4j.jul.LogManager</java.util.logging.manager>
</systemPropertyVariables>
</configuration>
</plugin>
<plugin>
<groupId>de.m3y.maven</groupId>
<artifactId>wire-maven-plugin</artifactId>
<executions>
<execution>
<phase>generate-test-sources</phase>
<goals>
<goal>generate-sources</goal>
</goals>
<configuration>
<generatedSourceDirectory>${proto.generatedSourceDirectory}</generatedSourceDirectory>
</configuration>
</execution>
</executions>
</plugin>
<!-- Adds the output directory from proto source generation for the test compiler -->
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>${build-helper-maven-plugin.version}</version>
<executions>
<execution>
<id>add-test-source</id>
<phase>generate-test-sources</phase>
<goals>
<goal>add-test-source</goal>
</goals>
<configuration>
<sources>
<source>${proto.generatedSourceDirectory}</source>
</sources>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>pl.project13.maven</groupId>
<artifactId>git-commit-id-plugin</artifactId>
<version>${git-commit-id.version}</version>
<executions>
<execution>
<id>extract-git-info</id>
<goals>
<goal>revision</goal>
</goals>
</execution>
</executions>
<configuration>
<failOnNoGitDirectory>false</failOnNoGitDirectory>
</configuration>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>${spring-boot.version}</version>
<configuration>
<mainClass>zipkin.server.ZipkinServer</mainClass>
<executable>true</executable>
</configuration>
<executions>
<execution>
<id>exec</id>
<goals>
<goal>repackage</goal>
</goals>
<configuration>
<classifier>exec</classifier>
<excludes>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
</dependency>
</excludes>
</configuration>
</execution>
<!-- Make a jar less than half the size, which only supports armeria-native features -->
<execution>
<id>slim</id>
<goals>
<goal>repackage</goal>
</goals>
<configuration>
<classifier>slim</classifier>
<!-- https://github.com/spring-projects/spring-boot/issues/3426 transitive exclude doesn't work -->
<excludeGroupIds>
com.google.auto.value,com.google.guava,io.dropwizard.metrics,org.apache.cassandra,com.github.jnr,org.ow2.asm,org.jooq,javax.xml.bind,org.mariadb.jdbc,com.zaxxer,org.apache.activemq,org.apache.geronimo.specs,org.fusesource.hawtbuf,org.apache.kafka,com.github.luben,org.lz4,org.xerial.snappy,com.rabbitmq,jakarta.annotation,org.apache.thrift,org.apache.logging.log4j
</excludeGroupIds>
<excludes>
<!-- Actuator -->
<dependency>
<groupId>com.linecorp.armeria</groupId>
<artifactId>armeria-spring-boot3-actuator-autoconfigure</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-actuator-autoconfigure</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-actuator</artifactId>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
</dependency>
<!-- Log4J 2 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>
<!-- Unnecessary netty deps -->
<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-codec-haproxy</artifactId>
</dependency>
<!-- removes boringssl from jar as all archs end up too big
we add this back in docker -->
<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-tcnative-boringssl-static</artifactId>
</dependency>
<!-- Unnecessary micrometer deps -->
<!-- TODO: https://github.com/micrometer-metrics/micrometer/issues/1599 -->
<!-- <dependency>-->
<!-- <!– only used by TimeWindowPercentileHistogram –>-->
<!-- <groupId>org.hdrhistogram</groupId>-->
<!-- <artifactId>HdrHistogram</artifactId>-->
<!-- </dependency>-->
<!-- <dependency>-->
<!-- <!– we don't use pause detector –>-->
<!-- <groupId>org.latencyutils</groupId>-->
<!-- <artifactId>LatencyUtils</artifactId>-->
<!-- </dependency>-->
<!-- storage and collectors which have 3rd party deps -->
<dependency>
<groupId>${project.groupId}.zipkin2</groupId>
<artifactId>zipkin-storage-cassandra</artifactId>
</dependency>
<dependency>
<groupId>io.zipkin.brave.cassandra</groupId>
<artifactId>brave-instrumentation-cassandra-driver</artifactId>
</dependency>
<!-- MySQL backend -->
<dependency>
<groupId>${project.groupId}.zipkin2</groupId>
<artifactId>zipkin-storage-mysql-v1</artifactId>
</dependency>
<!-- ActiveMQ Collector -->
<dependency>
<groupId>${project.groupId}.zipkin2</groupId>
<artifactId>zipkin-collector-activemq</artifactId>
</dependency>
<!-- Kafka Collector -->
<dependency>
<groupId>${project.groupId}.zipkin2</groupId>
<artifactId>zipkin-collector-kafka</artifactId>
</dependency>
<!-- RabbitMQ Collector -->
<dependency>
<groupId>${project.groupId}.zipkin2</groupId>
<artifactId>zipkin-collector-rabbitmq</artifactId>
</dependency>
<!-- Scribe Collector -->
<dependency>
<groupId>${project.groupId}.zipkin2</groupId>
<artifactId>zipkin-collector-scribe</artifactId>
</dependency>
<exclude>
<groupId>com.linecorp.armeria</groupId>
<artifactId>armeria-thrift0.18</artifactId>
</exclude>
</excludes>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>