chronicle-wire
Used in:
components
- OverviewOverview
- VersionsVersions
- DependentsDependents
- DependenciesDependencies
<dependency>
<groupId>net.openhft</groupId>
<artifactId>chronicle-wire</artifactId>
<version>2026.8</version>
</dependency><?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright 2013-2025 chronicle.software; 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>net.openhft</groupId>
<artifactId>java-parent-pom</artifactId>
<version>2026.0</version>
<relativePath />
</parent>
<artifactId>chronicle-wire</artifactId>
<version>2026.8</version>
<name>OpenHFT/Chronicle-Wire</name>
<!-- Core library for Chronicle's binary wire serialization -->
<description>Chronicle-Wire</description>
<packaging>bundle</packaging>
<properties>
<!-- Define the target coverage thresholds as properties -->
<jacoco.line.coverage>0.726</jacoco.line.coverage>
<jacoco.branch.coverage>0.664</jacoco.branch.coverage>
<surefireArgLine />
</properties>
<!-- Use BOMs to keep dependency versions consistent across modules -->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>net.openhft</groupId>
<artifactId>third-party-bom</artifactId>
<version>2026.0</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>net.openhft</groupId>
<artifactId>chronicle-bom</artifactId>
<version>2026.21</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<!-- Core Chronicle components -->
<dependency>
<groupId>net.openhft</groupId>
<artifactId>compiler</artifactId>
</dependency>
<dependency>
<groupId>net.openhft</groupId>
<artifactId>chronicle-core</artifactId>
</dependency>
<dependency>
<groupId>net.openhft</groupId>
<artifactId>chronicle-bytes</artifactId>
</dependency>
<dependency>
<groupId>net.openhft</groupId>
<artifactId>chronicle-threads</artifactId>
</dependency>
<!-- JetBrains annotations used for static analysis -->
<dependency>
<groupId>org.jetbrains</groupId>
<artifactId>annotations</artifactId>
</dependency>
<!-- test dependencies -->
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>net.openhft</groupId>
<artifactId>chronicle-test-framework</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.github.classgraph</groupId>
<artifactId>classgraph</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-params</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.platform</groupId>
<artifactId>junit-platform-engine</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.easymock</groupId>
<artifactId>easymock</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.yaml</groupId>
<artifactId>snakeyaml</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>net.openhft</groupId>
<artifactId>jlbh</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<repositories>
<repository>
<id>chronicle-enterprise-snapshots</id>
<name>Snapshot Repository</name>
<url>
https://nexus.chronicle.software/content/repositories/snapshots
</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
<repository>
<id>chronicle-enterprise-release</id>
<url>
https://nexus.chronicle.software/content/repositories/releases
</url>
<releases>
<enabled>true</enabled>
</releases>
</repository>
</repositories>
<build>
<plugins>
<plugin>
<groupId>com.github.ekryd.sortpom</groupId>
<artifactId>sortpom-maven-plugin</artifactId>
<version>3.0.1</version>
<configuration>
<nrOfIndentSpace>4</nrOfIndentSpace>
</configuration>
<!-- Do not bind to lifecycle to avoid mutating pom on normal builds.
Run on demand via: mvn sortpom:sort -->
</plugin>
<!-- Check API compatibility against previous releases -->
<plugin>
<groupId>net.openhft</groupId>
<artifactId>binary-compatibility-enforcer-plugin</artifactId>
<executions>
<execution>
<phase>verify</phase>
<goals>
<goal>enforcer</goal>
</goals>
<configuration>
<referenceVersion>2026.0</referenceVersion>
<artifactsURI>https://teamcity.chronicle.software/repository/download</artifactsURI>
<binaryCompatibilityPercentageRequired>100.0</binaryCompatibilityPercentageRequired>
<extraOptions>
<!--This skips "internal" but checks "impl"-->
<extraOption>
<name>-keep-internal</name>
</extraOption>
<extraOption>
<name>skip-internal-packages</name>
<value>.*internal.*</value>
</extraOption>
</extraOptions>
</configuration>
</execution>
</executions>
</plugin>
<!--
generate maven dependencies versions file that can be used later
to install the right bundle in test phase.
The file is:
target/classes/META-INF/maven/dependencies.properties
-->
<!-- Produce a list of dependency versions for OSGi bundle tests -->
<plugin>
<groupId>org.apache.servicemix.tooling</groupId>
<artifactId>depends-maven-plugin</artifactId>
<executions>
<execution>
<id>generate-depends-file</id>
<goals>
<goal>generate-depends-file</goal>
</goals>
</execution>
</executions>
</plugin>
<!-- Runs unit tests -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<!-- required for Issue327Test.date -->
<systemPropertyVariables>
<user.timezone>UTC</user.timezone>
</systemPropertyVariables>
<forkCount>1</forkCount>
<reuseForks>true</reuseForks>
<runOrder>hourly</runOrder>
<!-- Allow jacoco/others to inject via surefireArgLine along with JPMS flags -->
<argLine>${surefireArgLine} ${jvm.requiredArgs}</argLine>
</configuration>
</plugin>
<!-- Build the OSGi bundle used by downstream projects -->
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<extensions>true</extensions>
<configuration>
<instructions>
<Bundle-SymbolicName>${project.groupId}.${project.artifactId}
</Bundle-SymbolicName>
<Bundle-Name>OpenHFT :: ${project.artifactId}</Bundle-Name>
<Bundle-Version>${project.version}</Bundle-Version>
<Export-Package>
net.openhft.chronicle.wire.*;-noimport:=true
</Export-Package>
<Import-Package>
org.xerial.snappy;resolution:=optional,
*
</Import-Package>
</instructions>
</configuration>
<executions>
<!--
This execution makes sure that the manifest is available
when the tests are executed
-->
<execution>
<goals>
<goal>manifest</goal>
</goals>
</execution>
</executions>
</plugin>
<!-- Benchmark network latency with Wire -->
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>3.1.0</version>
<executions>
<!-- run this first -->
<execution>
<id>Gateway</id>
<goals>
<goal>java</goal>
</goals>
<configuration>
<skip>false</skip>
<mainClass>net.openhft.chronicle.wire.channel.ChronicleGatewayMain</mainClass>
<systemProperties>
<property>
<key>system.properties</key>
<value>/dev/null</value>
</property>
<property>
<key>pauserMode</key>
<value>busy</value>
</property>
</systemProperties>
<classpathScope>test</classpathScope>
</configuration>
</execution>
<!-- ECHOING MICROSERVICE LOW LATENCY TEST -->
<!-- run this second with -Durl=tcp://localhost:1248 or the host of your choice -->
<execution>
<id>EchoClient</id>
<goals>
<goal>java</goal>
</goals>
<configuration>
<skip>false</skip>
<mainClass>net.openhft.chronicle.wire.channel.PerfLatencyMain</mainClass>
<systemProperties>
<property>
<key>system.properties</key>
<value>/dev/null</value>
</property>
</systemProperties>
<classpathScope>test</classpathScope>
</configuration>
</execution>
<!-- ECHOING MICROSERVICE LATENCY WITH HIGH THROUGHPUT TEST -->
<!-- run this second with -Durl=tcp://localhost:1248 or the host of your choice -->
<execution>
<id>EchoClient-Throughput</id>
<goals>
<goal>java</goal>
</goals>
<configuration>
<skip>false</skip>
<mainClass>net.openhft.chronicle.wire.channel.PerfLatencyMain</mainClass>
<systemProperties>
<property>
<key>system.properties</key>
<value>/dev/null</value>
</property>
<property>
<key>throughput</key>
<value>1000000</value>
</property>
<property>
<key>buffered</key>
<value>true</value>
</property>
</systemProperties>
<classpathScope>test</classpathScope>
</configuration>
</execution>
<!-- ECHOING MICROSERVICE LOW LATENCY TEST -->
<!-- run this second with -Durl=tcp://localhost:1248 or the host of your choice -->
<execution>
<id>EchoThroughput</id>
<goals>
<goal>java</goal>
</goals>
<configuration>
<skip>false</skip>
<mainClass>net.openhft.chronicle.wire.channel.PerfThroughputMain</mainClass>
<systemProperties>
<property>
<key>system.properties</key>
<value>/dev/null</value>
</property>
</systemProperties>
<classpathScope>test</classpathScope>
</configuration>
</execution>
<execution>
<id>TopOfBook</id>
<goals>
<goal>java</goal>
</goals>
<configuration>
<skip>false</skip>
<mainClass>net.openhft.chronicle.wire.channel.book.PerfTopOfBookMain</mainClass>
<systemProperties>
<property>
<key>system.properties</key>
<value>/dev/null</value>
</property>
</systemProperties>
<classpathScope>test</classpathScope>
</configuration>
</execution>
<execution>
<id>TopOfBook-Allocation</id>
<goals>
<goal>java</goal>
</goals>
<configuration>
<skip>false</skip>
<mainClass>net.openhft.chronicle.wire.channel.book.PerfTopOfBookAllocationMain</mainClass>
<systemProperties>
<property>
<key>system.properties</key>
<value>/dev/null</value>
</property>
</systemProperties>
<classpathScope>test</classpathScope>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
<scm>
<url>scm:git:git@github.com:OpenHFT/Chronicle-Wire.git</url>
<connection>scm:git:git@github.com:OpenHFT/Chronicle-Wire.git</connection>
<developerConnection>scm:git:git@github.com:OpenHFT/Chronicle-Wire.git</developerConnection>
<tag>chronicle-wire-2026.8</tag>
</scm>
<profiles>
<profile>
<id>assertions</id>
<properties>
<zero.cost.assertions>enabled</zero.cost.assertions>
</properties>
</profile>
<profile>
<id>run-benchmarks</id>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-invoker-plugin</artifactId>
<configuration>
<pom>marshallingperf/pom.xml</pom>
<goals>clean,test</goals>
<profiles>run-benchmarks</profiles>
<properties>
<wire.version>${project.version}</wire.version>
</properties>
<streamLogs>true</streamLogs>
</configuration>
<executions>
<execution>
<goals>
<goal>run</goal>
</goals>
<phase>test</phase>
</execution>
</executions>
</plugin>
<!-- Launch JLBH benchmarks under this profile -->
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<configuration>
<classpathScope>test</classpathScope>
</configuration>
<executions>
<execution>
<id>long-converter-test</id>
<phase>test</phase>
<goals>
<goal>exec</goal>
</goals>
<configuration>
<executable>${java.home}/bin/java</executable>
<commandlineArgs>${jvm.requiredArgs} -classpath %classpath
net.openhft.chronicle.wire.AbstractTimestampLongConverterJLBHBenchmark
</commandlineArgs>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<!-- Disable unit tests -->
<skip>true</skip>
</configuration>
</plugin>
</plugins>
</build>
</profile>
</profiles>
</project>