spicedb-embedded
Used in:
components
- OverviewOverview
- VersionsVersions
- DependentsDependents
- DependenciesDependencies
<dependency>
<groupId>com.borkfork</groupId>
<artifactId>spicedb-embedded</artifactId>
<version>0.7.0</version>
</dependency><?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.borkfork</groupId>
<artifactId>spicedb-embedded</artifactId>
<version>0.7.0</version> <!-- x-release-please-version -->
<packaging>jar</packaging>
<name>spicedb-embedded</name>
<description>Embedded SpiceDB for JVM — embedded server with standard gRPC API</description>
<url>https://github.com/borkfork/spicedb-embedded</url>
<licenses>
<license>
<name>The Apache License, Version 2.0</name>
<url>https://www.apache.org/licenses/LICENSE-2.0.txt</url>
</license>
</licenses>
<developers>
<developer>
<name>borkfork</name>
<url>https://github.com/borkfork</url>
</developer>
</developers>
<scm>
<connection>scm:git:https://github.com/borkfork/spicedb-embedded.git</connection>
<developerConnection>scm:git:ssh://github.com/borkfork/spicedb-embedded.git</developerConnection>
<url>https://github.com/borkfork/spicedb-embedded</url>
</scm>
<distributionManagement>
<snapshotRepository>
<id>central</id>
<url>https://oss.sonatype.org/content/repositories/snapshots</url>
</snapshotRepository>
<repository>
<id>central</id>
<url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url>
</repository>
</distributionManagement>
<properties>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<!-- Must match the Netty version used by grpc-netty (4.1.x, NOT 4.2.x which is breaking). -->
<netty.version>4.1.132.Final</netty.version>
</properties>
<dependencies>
<!-- JNA for C FFI -->
<dependency>
<groupId>net.java.dev.jna</groupId>
<artifactId>jna</artifactId>
<version>5.18.1</version>
</dependency>
<!-- Authzed gRPC stubs (PermissionsService, SchemaService, WatchService) -->
<dependency>
<groupId>com.authzed.api</groupId>
<artifactId>authzed</artifactId>
<version>1.5.4</version>
</dependency>
<!-- gRPC (align versions with authzed) -->
<dependency>
<groupId>io.grpc</groupId>
<artifactId>grpc-stub</artifactId>
<version>1.80.0</version>
</dependency>
<dependency>
<groupId>io.grpc</groupId>
<artifactId>grpc-netty</artifactId>
<version>1.80.0</version>
</dependency>
<!-- Netty native transport for Unix sockets: Linux -->
<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-transport-native-epoll</artifactId>
<version>${netty.version}</version>
<classifier>linux-x86_64</classifier>
</dependency>
<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-transport-native-epoll</artifactId>
<version>${netty.version}</version>
<classifier>linux-aarch_64</classifier>
</dependency>
<!-- Netty native transport for Unix sockets: macOS -->
<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-transport-native-kqueue</artifactId>
<version>${netty.version}</version>
<classifier>osx-x86_64</classifier>
</dependency>
<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-transport-native-kqueue</artifactId>
<version>${netty.version}</version>
<classifier>osx-aarch_64</classifier>
</dependency>
<!-- JSON parsing for C library response -->
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.13.2</version>
</dependency>
<!-- Testing -->
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
<version>6.0.3</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.5.32</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<excludes>
<exclude>natives/**</exclude>
</excludes>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.15.0</version>
<configuration>
<source>17</source>
<target>17</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.5.5</version>
<configuration>
<!-- Natives on classpath: src/main/resources/natives/ (stage script and CI populate it; release job copies from natives-layout) -->
<additionalClasspathElements>
<additionalClasspathElement>${project.basedir}/src/main/resources</additionalClasspathElement>
</additionalClasspathElements>
<!-- Path to shared/c for loading libspicedb; set spicedb.library.path to override -->
<systemPropertyVariables>
<spicedb.library.path>${project.basedir}/../shared/c</spicedb.library.path>
</systemPropertyVariables>
<argLine>--enable-native-access=ALL-UNNAMED --add-opens=jdk.unsupported/sun.misc=ALL-UNNAMED -XX:+IgnoreUnrecognizedVMOptions --sun-misc-unsafe-memory-access=allow</argLine>
</configuration>
</plugin>
<plugin>
<groupId>com.diffplug.spotless</groupId>
<artifactId>spotless-maven-plugin</artifactId>
<version>3.4.0</version>
<configuration>
<java>
<googleJavaFormat/>
<!-- Exclude autogenerated gRPC/protobuf (e.g. from protobuf-maven-plugin) -->
<excludes>
<exclude>**/generated/**</exclude>
<exclude>**/target/generated-sources/**</exclude>
</excludes>
</java>
</configuration>
</plugin>
<!-- Maven Central: sources and javadoc -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>3.4.0</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>
<version>3.12.0</version>
<configuration>
<doclint>none</doclint>
<source>17</source>
</configuration>
<executions>
<execution>
<id>attach-javadocs</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
<!-- GPG signing: only when -P release (see profile below) -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-gpg-plugin</artifactId>
<version>3.2.8</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
<version>3.3.1</version>
<configuration>
<arguments>-ntp -P release</arguments>
<scmCommentPrefix />
<tagNameFormat>v@{project.version}</tagNameFormat>
</configuration>
</plugin>
<plugin>
<groupId>org.sonatype.central</groupId>
<artifactId>central-publishing-maven-plugin</artifactId>
<version>0.10.0</version>
<configuration>
<autoPublish>true</autoPublish>
<deploymentName>${project.artifactId}:${project.version}</deploymentName>
<waitUntil>validated</waitUntil>
</configuration>
<executions>
<execution>
<id>publish-to-central</id>
<phase>deploy</phase>
<goals>
<goal>publish</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
<profiles>
<profile>
<id>release</id>
<build>
<plugins>
<!-- Create classifier JARs (natives only) from target/natives-layout; CI lays out shared libs there. -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>3.2.0</version>
<executions>
<execution>
<id>create-natives-jars</id>
<phase>prepare-package</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<target>
<jar destfile="${project.build.directory}/${project.artifactId}-${project.version}-linux-x86_64.jar" basedir="${project.build.directory}/natives-layout/linux-x86_64"/>
<jar destfile="${project.build.directory}/${project.artifactId}-${project.version}-linux-aarch_64.jar" basedir="${project.build.directory}/natives-layout/linux-aarch_64"/>
<jar destfile="${project.build.directory}/${project.artifactId}-${project.version}-osx-aarch_64.jar" basedir="${project.build.directory}/natives-layout/osx-aarch_64"/>
<jar destfile="${project.build.directory}/${project.artifactId}-${project.version}-windows-x86_64.jar" basedir="${project.build.directory}/natives-layout/windows-x86_64"/>
</target>
</configuration>
</execution>
</executions>
</plugin>
<!-- Attach in verify (not package) so package phase is not re-triggered by adding artifacts. -->
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>3.6.1</version>
<executions>
<execution>
<id>attach-natives-jars</id>
<phase>verify</phase>
<goals>
<goal>attach-artifact</goal>
</goals>
<configuration>
<artifacts>
<artifact>
<file>${project.build.directory}/${project.artifactId}-${project.version}-linux-x86_64.jar</file>
<classifier>linux-x86_64</classifier>
<type>jar</type>
</artifact>
<artifact>
<file>${project.build.directory}/${project.artifactId}-${project.version}-linux-aarch_64.jar</file>
<classifier>linux-aarch_64</classifier>
<type>jar</type>
</artifact>
<artifact>
<file>${project.build.directory}/${project.artifactId}-${project.version}-osx-aarch_64.jar</file>
<classifier>osx-aarch_64</classifier>
<type>jar</type>
</artifact>
<artifact>
<file>${project.build.directory}/${project.artifactId}-${project.version}-windows-x86_64.jar</file>
<classifier>windows-x86_64</classifier>
<type>jar</type>
</artifact>
</artifacts>
</configuration>
</execution>
</executions>
</plugin>
<!-- Skip default deploy: we publish via central-publishing-maven-plugin to Central Portal,
not to OSSRH (oss.sonatype.org), which would 401 with token auth. -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-deploy-plugin</artifactId>
<version>3.1.4</version>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
<!-- Override to 3.2.1: something (e.g. central-publishing) re-runs the package phase,
and source 3.3+ fails when attach-sources runs twice. -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>3.4.0</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-gpg-plugin</artifactId>
<executions>
<execution>
<id>sign-artifacts</id>
<phase>verify</phase>
<goals>
<goal>sign</goal>
</goals>
<configuration>
<gpgArguments>
<arg>--pinentry-mode</arg>
<arg>loopback</arg>
</gpgArguments>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles>
</project>