jeffrey-events
Used in:
components
- OverviewOverview
- VersionsVersions
- DependentsDependents
- DependenciesDependencies
<dependency>
<groupId>cafe.jeffrey-analyst</groupId>
<artifactId>jeffrey-events</artifactId>
<version>0.23.0</version>
</dependency><?xml version="1.0" encoding="UTF-8"?>
<!--
~ Jeffrey
~ Copyright (C) 2026 Petr Bouda
~
~ Licensed under the Apache License, Version 2.0 (the "License");
~ you may not use this file except in compliance with the License.
~ You may obtain a copy of the License at
~
~ https://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing, software
~ distributed under the License is distributed on an "AS IS" BASIS,
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
~ See the License for the specific language governing permissions and
~ limitations under the License.
-->
<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>cafe.jeffrey-analyst</groupId>
<artifactId>jeffrey-utilities-parent</artifactId>
<version>0.23.0</version>
<relativePath>../pom.xml</relativePath>
</parent>
<!--
The published coordinate every consumer already depends on, and the one
the JFR event types live under. It must not change: the tracing API and the
instrumentation modules were split out to ../jeffrey-tracing-parent, but the
events artifact stays exactly where consumers expect it.
-->
<artifactId>jeffrey-events</artifactId>
<name>${project.groupId}:${project.artifactId}</name>
<description>Jeffrey-specific events that can be visualized by Jeffrey</description>
<!-- Explicit: Maven Central rejects children that inherit a url with the artifactId appended. -->
<url>https://github.com/petrbouda/jeffrey</url>
<dependencies>
<!--
The span model every traced event extends - AbstractTracedEvent, AbstractTracedInstant,
SpanKind - and the Tracer those events stamp themselves from, so a consumer of the events
gets the tracing API with them. The storage the Tracer keeps the span in progress in is a
separate choice (jeffrey-tracing-scoped-value or jeffrey-tracing-thread-local) left to
the application.
-->
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>jeffrey-tracing-api</artifactId>
</dependency>
<!--
The toolkit depends on nothing, so this does not make a reactor cycle:
jeffrey-tracing-test builds first, and jeffrey-events uses it to assert
its own emit paths against a real recording.
-->
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>jeffrey-tracing-test</artifactId>
<scope>test</scope>
</dependency>
<!--
Both storages: the Tracer's own tests live here, next to the events they trace, and run
once per storage - see the surefire executions below. Never both in one run: the
ScopedValue jar is a Java 25 named module, which an older JVM cannot even put on its
module path.
-->
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>jeffrey-tracing-scoped-value</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>jeffrey-tracing-thread-local</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<properties>
<!--
The ScopedValue run needs a Java 25 test JVM; set this to true when the tests run on an
older one (e.g. -Djvm=<java 21>).
-->
<jeffrey.tests.scoped-value.skip>false</jeffrey.tests.scoped-value.skip>
</properties>
<build>
<plugins>
<!--
The same tests, once per storage: the default run with only the ThreadLocal one, the
scoped-value-storage run with only the ScopedValue one. StorageRunTest checks each run
got the storage it was meant to.
-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<systemPropertyVariables>
<jeffrey.test.expected-storage>ThreadLocalSpanContextStorage</jeffrey.test.expected-storage>
</systemPropertyVariables>
<classpathDependencyExcludes>
<classpathDependencyExclude>${project.groupId}:jeffrey-tracing-scoped-value</classpathDependencyExclude>
</classpathDependencyExcludes>
</configuration>
<executions>
<execution>
<id>scoped-value-storage</id>
<goals>
<goal>test</goal>
</goals>
<configuration>
<skip>${jeffrey.tests.scoped-value.skip}</skip>
<systemPropertyVariables combine.self="override">
<jeffrey.test.expected-storage>ScopedValueSpanContextStorage</jeffrey.test.expected-storage>
</systemPropertyVariables>
<classpathDependencyExcludes combine.self="override">
<classpathDependencyExclude>${project.groupId}:jeffrey-tracing-thread-local</classpathDependencyExclude>
</classpathDependencyExcludes>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>