pal
Used in:
components
- OverviewOverview
- VersionsVersions
- DependentsDependents
- DependenciesDependencies
<dependency>
<groupId>io.quasient.pal</groupId>
<artifactId>pal</artifactId>
<version>1.0.0</version>
</dependency><!--
Copyright (C) 2026 Quasient Inc. <https://www.quasient.com>
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
http://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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>io.quasient.pal</groupId>
<artifactId>pal</artifactId>
<packaging>pom</packaging>
<version>1.0.0</version>
<name>pal</name>
<description>Message-passing runtime for Java - turns operations into messages for logging, routing, interception, and replay</description>
<url>https://github.com/quasientio/pal</url>
<scm>
<connection>scm:git:git://github.com/quasientio/pal.git</connection>
<developerConnection>scm:git:ssh://github.com:quasientio/pal.git</developerConnection>
<url>https://github.com/quasientio/pal</url>
</scm>
<developers>
<developer>
<name>Manuel Martinez</name>
<email>manuel@quasient.com</email>
<organization>Quasient</organization>
<organizationUrl>https://www.quasient.com</organizationUrl>
</developer>
</developers>
<licenses>
<license>
<name>Apache License, Version 2.0</name>
<url>https://www.apache.org/licenses/LICENSE-2.0.txt</url>
<distribution>repo</distribution>
</license>
</licenses>
<properties>
<!-- PROJECT VERSION -->
<pal.version>1.0.0</pal.version>
<!-- BUILD VERSIONS -->
<java.version>17</java.version>
<!-- MAVEN PLUGIN VERSIONS -->
<maven.surefire.version>3.2.5</maven.surefire.version>
<maven.failsafe.version>3.2.5</maven.failsafe.version>
<maven.plugin.compiler.version>3.13.0</maven.plugin.compiler.version>
<maven.plugin.site.version>3.12.1</maven.plugin.site.version>
<maven.plugin.reports.version>3.5.0</maven.plugin.reports.version>
<maven.plugin.deploy.version>3.1.4</maven.plugin.deploy.version>
<maven.plugin.jar.version>3.4.1</maven.plugin.jar.version>
<maven.plugin.install.version>3.1.4</maven.plugin.install.version>
<maven.plugin.assembly.version>3.7.1</maven.plugin.assembly.version>
<maven.plugin.dependency.version>3.6.1</maven.plugin.dependency.version>
<maven.plugin.clean.version>3.3.2</maven.plugin.clean.version>
<maven.plugin.resources.version>3.2.0</maven.plugin.resources.version>
<maven.plugin.shade.version>3.5.2</maven.plugin.shade.version>
<maven.plugin.checkstyle.version>3.6.0</maven.plugin.checkstyle.version>
<maven.plugin.enforcer.version>3.6.2</maven.plugin.enforcer.version>
<extra.enforcer.rules.version>1.12.0</extra.enforcer.rules.version>
<licensing.plugin.version>5.0.0</licensing.plugin.version>
<license.maven.plugin.version>2.6.0</license.maven.plugin.version>
<aspectj.plugin.version>1.15.0</aspectj.plugin.version>
<freefair.aspectj.version>8.6</freefair.aspectj.version>
<spotless.version>2.43.0</spotless.version>
<googleJavaFormat.version>1.22.0</googleJavaFormat.version>
<jacoco.plugin.version>0.8.12</jacoco.plugin.version>
<errorprone.plugin.version>2.38.0</errorprone.plugin.version>
<pmd.plugin.version>3.28.0</pmd.plugin.version>
<spotbugs.plugin.version>4.8.6.6</spotbugs.plugin.version>
<spotbugs.annotations.version>4.8.6</spotbugs.annotations.version>
<jxr.plugin.version>3.6.0</jxr.plugin.version>
<maven.plugin.javadoc.version>3.6.3</maven.plugin.javadoc.version>
<maven.plugin.source.version>3.3.1</maven.plugin.source.version>
<maven.plugin.gpg.version>3.2.7</maven.plugin.gpg.version>
<central.publishing.plugin.version>0.6.0</central.publishing.plugin.version>
<!-- DEPENDENCIES VERSIONS -->
<aspectj.version>1.9.24</aspectj.version>
<junit.version>4.13.2</junit.version>
<hamcrest.core.version>2.2</hamcrest.core.version>
<guice.version>7.0.0</guice.version>
<guava.version>33.1.0-jre</guava.version>
<jctools.version>4.0.5</jctools.version>
<jakarta.inject.version>2.0.0</jakarta.inject.version>
<mockito.version>3.6.28</mockito.version>
<logback.classic.version>1.5.13</logback.classic.version>
<slf4j.version>2.0.7</slf4j.version>
<commons.lang3.version>3.18.0</commons.lang3.version>
<picocli.version>4.7.5</picocli.version>
<jeromq.version>0.6.0</jeromq.version>
<jetcd.core.version>0.8.5</jetcd.core.version>
<kafka.clients.version>3.8.1</kafka.clients.version>
<kafka.streams.version>3.8.1</kafka.streams.version>
<org.json.version>20240303</org.json.version>
<gson.version>2.11.0</gson.version>
<antpath.matcher>1.0.0</antpath.matcher>
<unirest.version>3.14.5</unirest.version>
<chronicle.version>5.27ea7</chronicle.version>
<disruptor.version>4.0.0</disruptor.version>
<equalsverifier.version>3.16.1</equalsverifier.version>
<jsr305.version>3.0.2</jsr305.version>
<java-websocket.version>1.5.7</java-websocket.version>
<classgraph.version>4.8.179</classgraph.version>
<jackson.version>2.18.1</jackson.version>
<spring-boot-loader.version>3.2.1</spring-boot-loader.version>
<jmh.version>1.37</jmh.version>
<snakeyaml.version>2.2</snakeyaml.version>
<jline.version>3.26.3</jline.version>
<!-- LOGGING -->
<logs.dir>logs</logs.dir>
<!-- TEST FLAGS -->
<skipTests>false</skipTests>
<skipITs>${skipTests}</skipITs>
<skipUTs>${skipTests}</skipUTs>
<!-- LICENSING -->
<copyrightYear>2026</copyrightYear>
<!-- MISC PROPERTIES -->
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<!-- disable "compileSourceRoots through add() is deprecated" warning -->
<maven.project.sourceRoots.warningsDisabled>true</maven.project.sourceRoots.warningsDisabled>
</properties>
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-install-plugin</artifactId>
<version>${maven.plugin.install.version}</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>${maven.plugin.jar.version}</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>${maven.plugin.assembly.version}</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-deploy-plugin</artifactId>
<version>${maven.plugin.deploy.version}</version>
</plugin>
<!-- mvn enforcer -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-enforcer-plugin</artifactId>
<version>${maven.plugin.enforcer.version}</version>
</plugin>
<!-- report plugins -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-site-plugin</artifactId>
<version>${maven.plugin.site.version}</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-project-info-reports-plugin</artifactId>
<version>${maven.plugin.reports.version}</version>
</plugin>
<!-- code reformatting (Spotless with Google Java Format) -->
<plugin>
<groupId>com.diffplug.spotless</groupId>
<artifactId>spotless-maven-plugin</artifactId>
<version>${spotless.version}</version>
<configuration>
<java>
<googleJavaFormat>
<version>${googleJavaFormat.version}</version>
</googleJavaFormat>
<removeUnusedImports />
<trimTrailingWhitespace />
<endWithNewline />
</java>
</configuration>
<executions>
<execution>
<id>spotless-apply</id>
<phase>process-sources</phase>
<goals>
<goal>apply</goal>
</goals>
</execution>
</executions>
</plugin>
<!-- JaCoCo: Code coverage for unit and integration tests -->
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>${jacoco.plugin.version}</version>
<executions>
<execution>
<goals>
<goal>prepare-agent</goal>
</goals>
</execution>
<execution>
<id>report</id>
<phase>test</phase>
<goals>
<goal>report</goal>
</goals>
</execution>
<!-- Integration test instrumentation -->
<execution>
<id>prepare-agent-integration</id>
<goals>
<goal>prepare-agent-integration</goal>
</goals>
<configuration>
<destFile>${project.build.directory}/jacoco-it.exec</destFile>
<propertyName>failsafeArgLine</propertyName>
</configuration>
</execution>
<!-- Integration test report -->
<execution>
<id>report-integration</id>
<phase>post-integration-test</phase>
<goals>
<goal>report-integration</goal>
</goals>
<configuration>
<dataFile>${project.build.directory}/jacoco-it.exec</dataFile>
<outputDirectory>${project.build.directory}/site/jacoco-it</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
<!-- resources -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>${maven.plugin.resources.version}</version>
<configuration>
<propertiesEncoding>UTF-8</propertiesEncoding>
</configuration>
</plugin>
<!-- tests -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>${maven.surefire.version}</version>
<configuration>
<skipTests>${skipUTs}</skipTests>
<!-- Use TCP for fork communication to avoid stdin/stdout stream corruption
when tests redirect System.out/System.in -->
<forkNode implementation="org.apache.maven.plugin.surefire.extensions.SurefireForkNodeFactory"/>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<version>${maven.failsafe.version}</version>
<executions>
<execution>
<id>run-integration-tests</id>
<phase>integration-test</phase>
<goals>
<goal>integration-test</goal>
<goal>verify</goal>
</goals>
</execution>
</executions>
<configuration>
<skipTests>${skipTests}</skipTests>
<skipITs>${skipITs}</skipITs>
</configuration>
</plugin>
<!-- maven-dependency -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>${maven.plugin.dependency.version}</version>
</plugin>
<!-- Javadoc generation -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>${maven.plugin.javadoc.version}</version>
<configuration>
<!-- Java 17 source -->
<source>${java.version}</source>
<!-- Include only public and protected members -->
<show>protected</show>
<!-- Fail on errors but not warnings (existing javadoc may have minor issues) -->
<failOnError>true</failOnError>
<failOnWarnings>false</failOnWarnings>
<!-- Link to standard Java SE docs -->
<links>
<link>https://docs.oracle.com/en/java/javase/17/docs/api/</link>
</links>
<!-- Additional options for cleaner output -->
<quiet>true</quiet>
<encoding>UTF-8</encoding>
<docencoding>UTF-8</docencoding>
<charset>UTF-8</charset>
<!-- Doclint: disable all checks (references to internal classes cause errors) -->
<doclint>none</doclint>
</configuration>
</plugin>
<!-- Licensing third-party -->
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>license-maven-plugin</artifactId>
<version>${license.maven.plugin.version}</version>
<!-- shared configuration visible to every execution -->
<configuration>
<!-- where THIRD_PARTY.md goes -->
<outputDirectory>${project.basedir}</outputDirectory>
<thirdPartyFilename>THIRD_PARTY.md</thirdPartyFilename>
<fileTemplate>${project.basedir}/licenses/THIRD_PARTY.ftl</fileTemplate>
<sortArtifactByName>true</sortArtifactByName>
<!-- skip own modules -->
<excludedGroups>io.quasient.pal</excludedGroups>
<!-- download-goal settings -->
<licensesConfigFile>${project.basedir}/licenses/url-fixes.xml</licensesConfigFile>
<licensesOutputDirectory>${project.basedir}/licenses/third-party</licensesOutputDirectory>
<includeTransitiveDependencies>true</includeTransitiveDependencies>
<extendedInfo>true</extendedInfo>
<removeOrphanLicenseFiles>true</removeOrphanLicenseFiles>
</configuration>
</plugin>
</plugins>
</pluginManagement>
<plugins>
<!-- Compiler plugin with errorProne configuration -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>${maven.plugin.compiler.version}</version>
<configuration>
<source>${java.version}</source>
<target>${java.version}</target>
<release>17</release>
<showWarnings>true</showWarnings>
<failOnWarning>true</failOnWarning>
<encoding>UTF-8</encoding>
<!-- -Xep:JUnitIncompatibleType:OFF to disable error (reported as https://github.com/google/error-prone/issues/4376) -->
<compilerArgs>
<!-- normal javac flags can each be their own <arg> -->
<arg>-Xlint:deprecation</arg>
<arg>-Xlint:unchecked</arg>
<arg>-XDcompilePolicy=simple</arg>
<arg>--should-stop=ifError=FLOW</arg>
<!-- ALL Error Prone stuff in ONE <arg> -->
<arg>
-Xplugin:ErrorProne
-Xep:JUnitIncompatibleType:OFF
-Xep:DeadException:WARN
-XepExcludedPaths:.*/(pal-api/src/main/java/io/quasient/pal/messages/colfer.*|pal-benchmarks/target/generated-sources/.*)
-Xep:GuardedBy:OFF
</arg>
</compilerArgs>
<annotationProcessorPaths>
<path>
<groupId>com.google.errorprone</groupId>
<artifactId>error_prone_core</artifactId>
<version>${errorprone.plugin.version}</version>
</path>
</annotationProcessorPaths>
</configuration>
</plugin>
<!-- cleaning tasks -->
<plugin>
<artifactId>maven-clean-plugin</artifactId>
<version>${maven.plugin.clean.version}</version>
<configuration>
<filesets>
<fileset>
<directory>lib</directory>
</fileset>
<fileset>
<directory>logs</directory>
</fileset>
</filesets>
</configuration>
</plugin>
<!-- checkstyle for mandatory javadoc -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
<version>${maven.plugin.checkstyle.version}</version>
<configuration>
<configLocation>${maven.multiModuleProjectDirectory}/build/checkstyle/checkstyle.xml</configLocation>
<suppressionsLocation>
${maven.multiModuleProjectDirectory}/build/checkstyle/checkstyle-suppressions.xml
</suppressionsLocation>
<!-- tell the plug-in which variable name we used in the XML above -->
<suppressionsFileExpression>checkstyle.suppressions.file</suppressionsFileExpression>
<!-- Show violations in the console and fail the build -->
<consoleOutput>true</consoleOutput>
<failOnViolation>true</failOnViolation>
</configuration>
<executions>
<execution>
<phase>validate</phase>
<goals>
<goal>check</goal>
</goals>
</execution>
</executions>
</plugin>
<!-- Spotless code formatting (inherited by all modules) -->
<plugin>
<groupId>com.diffplug.spotless</groupId>
<artifactId>spotless-maven-plugin</artifactId>
</plugin>
<!-- Licensing -->
<plugin>
<groupId>com.mycila</groupId>
<artifactId>license-maven-plugin</artifactId>
<version>${licensing.plugin.version}</version>
<configuration>
<aggregate>true</aggregate>
<licenseSets>
<licenseSet>
<header>licenses/APACHE_HEADER.txt</header>
<excludes>
<exclude>AUTHORS</exclude>
<exclude>requirements.txt</exclude>
<exclude>.java-version</exclude>
<exclude>**/*.env</exclude>
<exclude>**/*.env.example</exclude>
<exclude>**/pom-fragment-*.xml</exclude>
<exclude>modules/pal-cli/src/main/resources/init/*.template</exclude>
<exclude>**/*.bak</exclude>
<exclude>venv/**</exclude>
<exclude>.local/**</exclude>
<exclude>.run/**</exclude>
<exclude>.m2/**</exclude>
<exclude>docs/**</exclude>
<exclude>site/**</exclude>
<exclude>.forgejo/**/*.yaml</exclude>
<exclude>licenses/third-party/</exclude>
<exclude>infra/bin/palind</exclude> <!-- ignore symlink -->
<exclude>config/kafka/server.properties</exclude>
</excludes>
</licenseSet>
</licenseSets>
<mapping>
<java>SLASHSTAR_STYLE</java>
<colf>SLASHSTAR_STYLE</colf>
<yml>SCRIPT_STYLE</yml>
<yaml>SCRIPT_STYLE</yaml>
<xml>XML_STYLE</xml>
<xml.example>XML_STYLE</xml.example>
<yaml.example>SCRIPT_STYLE</yaml.example>
<sh.example>SCRIPT_STYLE</sh.example>
</mapping>
<properties>
<year>${copyrightYear}</year>
</properties>
</configuration>
<executions>
<!-- Fail the build if any file is missing or has the wrong header -->
<execution>
<id>validate-headers</id>
<phase>validate</phase>
<goals>
<goal>check</goal>
</goals>
<inherited>false</inherited>
</execution>
</executions>
</plugin>
<!-- mvn enforcer -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-enforcer-plugin</artifactId>
<!-- Add a custom rule that forbids versions outside dependencyManagement -->
<dependencies>
<dependency>
<groupId>org.codehaus.mojo</groupId>
<artifactId>extra-enforcer-rules</artifactId>
<version>${extra.enforcer.rules.version}</version>
</dependency>
</dependencies>
<executions>
<execution>
<id>baseline-enforcement</id>
<phase>validate</phase>
<goals><goal>enforce</goal></goals>
<configuration>
<rules>
<!-- Java 17+ required -->
<requireJavaVersion>
<version>[17,)</version>
</requireJavaVersion>
<!-- All plugins must have explicit versions (no LATEST/RELEASE/SNAPSHOT) -->
<requirePluginVersions>
<banLatest>true</banLatest>
<banRelease>true</banRelease>
<banSnapshots>true</banSnapshots>
</requirePluginVersions>
<!-- Every dependency version must come from dependencyManagement -->
<requireManagedDeps>
<checkProfiles>true</checkProfiles>
</requireManagedDeps>
</rules>
<fail>true</fail>
</configuration>
</execution>
</executions>
</plugin>
<!-- JXR: generate xref under target/reports so PMD can link to it -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jxr-plugin</artifactId>
<version>${jxr.plugin.version}</version>
<executions>
<execution>
<id>main-xref</id>
<phase>package</phase>
<goals><goal>jxr</goal></goals>
<configuration>
<!-- base site folder -->
<outputDirectory>${project.build.directory}/reports</outputDirectory>
</configuration>
</execution>
<execution>
<id>test-xref</id>
<phase>package</phase>
<goals><goal>test-jxr</goal></goals>
<configuration>
<outputDirectory>${project.build.directory}/reports</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
<!-- PMD rules -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-pmd-plugin</artifactId>
<version>${pmd.plugin.version}</version>
<!-- default: main sources only -->
<configuration>
<rulesets>
<ruleset>${maven.multiModuleProjectDirectory}/build/pmd/ruleset.xml</ruleset>
</rulesets>
<includeTests>false</includeTests>
<failOnViolation>true</failOnViolation>
</configuration>
<executions>
<!-- 1) MAIN sources: PMD + CPD -->
<execution>
<id>pmd-main-and-cpd</id>
<phase>verify</phase>
<goals>
<goal>check</goal>
<goal>cpd-check</goal>
</goals>
</execution>
<!-- 2) ALL sources (main + tests): PMD only -->
<execution>
<id>pmd-all</id>
<phase>verify</phase>
<goals>
<!-- call pmd first so check has a report to read -->
<goal>pmd</goal>
<goal>check</goal>
</goals>
<configuration>
<includeTests>true</includeTests>
<!-- keep its XML separate from the main-only run -->
<targetDirectory>${project.build.directory}/pmdAll</targetDirectory>
</configuration>
</execution>
</executions>
</plugin>
<!-- SpotBugs static analysis -->
<plugin>
<groupId>com.github.spotbugs</groupId>
<artifactId>spotbugs-maven-plugin</artifactId>
<version>${spotbugs.plugin.version}</version>
<configuration>
<effort>Max</effort>
<threshold>Low</threshold>
<failOnError>true</failOnError>
<includeTests>false</includeTests>
<excludeFilterFile>${maven.multiModuleProjectDirectory}/build/spotbugs/spotbugs-exclude.xml</excludeFilterFile>
</configuration>
<executions>
<execution>
<id>spotbugs-check</id>
<phase>verify</phase>
<goals>
<goal>check</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
<dependencyManagement>
<dependencies>
<!-- OWN DEPENDENCIES -->
<dependency>
<groupId>io.quasient.pal</groupId>
<artifactId>pal-api</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>io.quasient.pal</groupId>
<artifactId>pal-client</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>io.quasient.pal</groupId>
<artifactId>pal-weave</artifactId>
<version>${project.version}</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>io.quasient.pal</groupId>
<artifactId>itt-apps</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>io.quasient.pal</groupId>
<artifactId>itt</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>io.quasient.pal</groupId>
<artifactId>pal-runtime</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>io.quasient.pal</groupId>
<artifactId>pal-cli</artifactId>
<version>${project.version}</version>
</dependency>
<!-- OTHER DEPENDENCIES -->
<!-- static analysis annotations -->
<dependency>
<groupId>com.github.spotbugs</groupId>
<artifactId>spotbugs-annotations</artifactId>
<version>${spotbugs.annotations.version}</version>
<optional>true</optional>
</dependency>
<!-- logging -->
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>${logback.classic.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${slf4j.version}</version>
</dependency>
<!-- testing -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest-core</artifactId>
<version>${hamcrest.core.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<version>${mockito.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-inline</artifactId>
<version>${mockito.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>nl.jqno.equalsverifier</groupId>
<artifactId>equalsverifier</artifactId>
<version>${equalsverifier.version}</version>
<scope>test</scope>
</dependency>
<!-- commons -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>${commons.lang3.version}</version>
</dependency>
<!-- picocli -->
<dependency>
<groupId>info.picocli</groupId>
<artifactId>picocli</artifactId>
<version>${picocli.version}</version>
</dependency>
<!-- ioc -->
<dependency>
<groupId>jakarta.inject</groupId>
<artifactId>jakarta.inject-api</artifactId>
<version>${jakarta.inject.version}</version>
</dependency>
<dependency>
<groupId>com.google.inject</groupId>
<artifactId>guice</artifactId>
<version>${guice.version}</version>
</dependency>
<!-- etcd -->
<dependency>
<groupId>io.etcd</groupId>
<artifactId>jetcd-core</artifactId>
<version>${jetcd.core.version}</version>
</dependency>
<!-- jeromq -->
<dependency>
<groupId>org.zeromq</groupId>
<artifactId>jeromq</artifactId>
<version>${jeromq.version}</version>
</dependency>
<!-- kafka -->
<dependency>
<groupId>org.apache.kafka</groupId>
<artifactId>kafka-clients</artifactId>
<version>${kafka.clients.version}</version>
</dependency>
<dependency>
<groupId>org.apache.kafka</groupId>
<artifactId>kafka-streams</artifactId>
<version>${kafka.streams.version}</version>
</dependency>
<!-- guava -->
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>${guava.version}</version>
</dependency>
<!-- JCtools -->
<dependency>
<groupId>org.jctools</groupId>
<artifactId>jctools-core</artifactId>
<version>${jctools.version}</version>
</dependency>
<!-- json -->
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>${org.json.version}</version>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>${gson.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>${jackson.version}</version>
</dependency>
<!-- aspectj -->
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
<version>${aspectj.version}</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjtools</artifactId>
<version>${aspectj.version}</version>
</dependency>
<!-- ant-path matcher -->
<dependency>
<groupId>io.github.azagniotov</groupId>
<artifactId>ant-style-path-matcher</artifactId>
<version>${antpath.matcher}</version>
</dependency>
<!-- unirest -->
<dependency>
<groupId>com.konghq</groupId>
<artifactId>unirest-java</artifactId>
<version>${unirest.version}</version>
</dependency>
<!-- misc -->
<dependency>
<groupId>com.google.code.findbugs</groupId>
<artifactId>jsr305</artifactId>
<version>${jsr305.version}</version>
</dependency>
<!-- Not used by Pal, but needed to support the new spring-boot nested jars. See issue #223 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-loader</artifactId>
<version>${spring-boot-loader.version}</version>
</dependency>
<!-- java-websocket -->
<dependency>
<groupId>org.java-websocket</groupId>
<artifactId>Java-WebSocket</artifactId>
<version>${java-websocket.version}</version>
</dependency>
<!-- chronicle queue -->
<dependency>
<groupId>net.openhft</groupId>
<artifactId>chronicle-queue</artifactId>
<version>${chronicle.version}</version>
</dependency>
<!-- lmax disruptor -->
<dependency>
<groupId>com.lmax</groupId>
<artifactId>disruptor</artifactId>
<version>${disruptor.version}</version>
</dependency>
<!-- errorprone -->
<dependency>
<groupId>com.google.errorprone</groupId>
<artifactId>error_prone_core</artifactId>
<version>${errorprone.plugin.version}</version>
</dependency>
<!-- classgraph -->
<dependency>
<groupId>io.github.classgraph</groupId>
<artifactId>classgraph</artifactId>
<version>${classgraph.version}</version>
</dependency>
<!-- YAML parsing -->
<dependency>
<groupId>org.yaml</groupId>
<artifactId>snakeyaml</artifactId>
<version>${snakeyaml.version}</version>
</dependency>
<!-- JLine terminal -->
<dependency>
<groupId>org.jline</groupId>
<artifactId>jline</artifactId>
<version>${jline.version}</version>
</dependency>
<!-- JMH benchmarks -->
<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>
</dependencies>
</dependencyManagement>
<modules>
<module>modules/pal-api</module>
<module>modules/pal-weave</module>
<module>modules/pal-client</module>
<module>modules/pal-runtime</module>
<module>modules/pal-cli</module>
<module>modules/itt-apps</module>
<module>modules/itt</module>
<module>modules/pal-benchmarks</module>
<module>modules/pal-coverage</module>
<module>distribution</module>
</modules>
<profiles>
<profile>
<id>release-legal</id>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>license-maven-plugin</artifactId>
<executions>
<execution>
<id>legal-bundle</id>
<phase>verify</phase>
<goals>
<goal>aggregate-add-third-party</goal>
<goal>aggregate-download-licenses</goal>
</goals>
<inherited>false</inherited>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>logs</id>
<build>
<plugins>
<plugin>
<artifactId>maven-clean-plugin</artifactId>
<version>${maven.plugin.clean.version}</version>
<configuration>
<!-- Do NOT delete target/ -->
<excludeDefaultDirectories>true</excludeDefaultDirectories>
<filesets>
<!-- runs once per project (root and each module) -->
<fileset>
<directory>${project.basedir}/logs</directory>
<includes>
<include>**/*</include>
</includes>
</fileset>
</filesets>
</configuration>
</plugin>
</plugins>
</build>
</profile>
<profile>
<!--
Javadoc generation profile (pal-api and pal-client only).
Usage:
./mvnw javadoc:javadoc -Pjavadoc - Generate HTML docs
./mvnw javadoc:jar -Pjavadoc - Generate javadoc JARs
./mvnw javadoc:aggregate -Pjavadoc - Generate combined HTML docs at root
Artifacts:
- Per-module HTML: modules/<name>/target/site/apidocs/
- Per-module JAR: modules/<name>/target/<name>-<version>-javadoc.jar
- Aggregated HTML: target/site/apidocs/
-->
<id>javadoc</id>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<configuration>
<!-- Only generate javadocs for pal-api and pal-client -->
<skippedModules>pal,pal-weave,pal-runtime,pal-cli,itt,itt-apps,pal-benchmarks,distribution</skippedModules>
</configuration>
<executions>
<!-- Attach javadoc JAR to install/deploy phase -->
<execution>
<id>attach-javadocs</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>release</id>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>${maven.plugin.source.version}</version>
<executions>
<execution>
<id>attach-sources</id>
<goals>
<goal>jar-no-fork</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<configuration>
<skippedModules>pal-runtime,pal-cli,itt,itt-apps,pal-benchmarks,pal-coverage,distribution</skippedModules>
</configuration>
<executions>
<execution>
<id>attach-javadocs</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-gpg-plugin</artifactId>
<version>${maven.plugin.gpg.version}</version>
<executions>
<execution>
<id>sign-artifacts</id>
<phase>verify</phase>
<goals>
<goal>sign</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.sonatype.central</groupId>
<artifactId>central-publishing-maven-plugin</artifactId>
<version>${central.publishing.plugin.version}</version>
<extensions>true</extensions>
<configuration>
<publishingServerId>central</publishingServerId>
<autoPublish>false</autoPublish>
</configuration>
</plugin>
</plugins>
</build>
</profile>
</profiles>
</project>