tfhe-java
Used in:
components
- OverviewOverview
- VersionsVersions
- DependentsDependents
- DependenciesDependencies
<dependency>
<groupId>io.github.rdlopes</groupId>
<artifactId>tfhe-java</artifactId>
<version>0.11.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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>io.github.rdlopes</groupId>
<artifactId>maven-root-pom</artifactId>
<version>1.10.0</version>
</parent>
<artifactId>tfhe-java</artifactId>
<version>0.11.0</version>
<name>TFHE Java</name>
<description>TFHE encryption scheme for Java</description>
<url>https://github.com/rdlopes/tfhe-java</url>
<scm>
<connection>scm:git:https://github.com/rdlopes/${project.artifactId}.git</connection>
<developerConnection>scm:git:https://github.com/rdlopes/${project.artifactId}.git</developerConnection>
<tag>0.11.0</tag>
<url>https://github.com/rdlopes/${project.artifactId}</url>
</scm>
<properties>
<!-- Project properties -->
<java.version>25</java.version>
<native.basedir>${project.basedir}/.native</native.basedir>
<native-libs.basedir>${native.basedir}/libs</native-libs.basedir>
<native-bindings.basedir>${native.basedir}/bindings</native-bindings.basedir>
<native-libs.output.directory>${project.build.outputDirectory}/native</native-libs.output.directory>
<generated.output.directory>${project.build.directory}/generated-sources</generated.output.directory>
<generated.test.output.directory>${project.build.directory}/generated-test-sources</generated.test.output.directory>
<native-bindings.output.directory>${generated.output.directory}/tfhe-rs</native-bindings.output.directory>
<tfhe-rs.basedir>${native.basedir}/tfhe-rs</tfhe-rs.basedir>
<!--suppress XmlUnresolvedReference -->
<java.library.path>${native-libs.basedir}/${os.detected.name}/${os.detected.arch}</java.library.path>
<!-- Library dependencies -->
<commons-io.version>2.20.0</commons-io.version>
<commons-lang3.version>3.18.0</commons-lang3.version>
<jspecify.version>1.0.0</jspecify.version>
<picocli.version>4.7.7</picocli.version>
<handlebars.version>4.5.0</handlebars.version>
<!-- Plugin dependencies-->
<os-maven-plugin.version>1.7.1</os-maven-plugin.version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.jspecify</groupId>
<artifactId>jspecify</artifactId>
<version>${jspecify.version}</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>${commons-lang3.version}</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>${commons-io.version}</version>
</dependency>
<dependency>
<groupId>info.picocli</groupId>
<artifactId>picocli</artifactId>
<version>${picocli.version}</version>
</dependency>
<dependency>
<groupId>com.github.jknack</groupId>
<artifactId>handlebars</artifactId>
<version>${handlebars.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.jspecify</groupId>
<artifactId>jspecify</artifactId>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
</dependency>
<dependency>
<groupId>info.picocli</groupId>
<artifactId>picocli</artifactId>
</dependency>
<dependency>
<groupId>com.github.jknack</groupId>
<artifactId>handlebars</artifactId>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.assertj</groupId>
<artifactId>assertj-core</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<environmentVariables>
<RUST_BACKTRACE>full</RUST_BACKTRACE>
</environmentVariables>
<argLine combine.children="append">--enable-native-access=ALL-UNNAMED
-Djava.library.path=${java.library.path}</argLine>
<excludedGroups>intensive</excludedGroups>
<runOrder>alphabetical</runOrder>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<executions>
<execution>
<id>copy-native-bindings</id>
<goals>
<goal>copy-resources</goal>
</goals>
<phase>generate-sources</phase>
<configuration>
<outputDirectory>${native-bindings.output.directory}</outputDirectory>
<resources>
<resource>
<directory>${native-bindings.basedir}</directory>
<includes>
<include>**/*.java</include>
</includes>
</resource>
</resources>
</configuration>
</execution>
<execution>
<id>copy-native-libs</id>
<goals>
<goal>copy-resources</goal>
</goals>
<phase>generate-resources</phase>
<configuration>
<outputDirectory>${native-libs.output.directory}</outputDirectory>
<resources>
<resource>
<directory>${native-libs.basedir}</directory>
<includes>
<include>LICENSE</include>
<include>**/*.h</include>
<include>**/*.dylib</include>
<include>**/*.so</include>
<include>**/*.dll</include>
</includes>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<executions>
<execution>
<id>add-generated-classes</id>
<goals>
<goal>add-source</goal>
</goals>
<phase>process-resources</phase>
<configuration>
<sources>
<source>${native-bindings.output.directory}</source>
<source>${generated.output.directory}/tfhe-java</source>
</sources>
</configuration>
</execution>
<execution>
<id>add-generated-test-classes</id>
<goals>
<goal>add-test-source</goal>
</goals>
<phase>process-resources</phase>
<configuration>
<sources>
<source>${generated.test.output.directory}/tfhe-java</source>
</sources>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>25</source>
<target>25</target>
<compilerArgs>--enable-preview</compilerArgs>
</configuration>
</plugin>
</plugins>
<extensions>
<extension>
<groupId>kr.motd.maven</groupId>
<artifactId>os-maven-plugin</artifactId>
<version>${os-maven-plugin.version}</version>
</extension>
</extensions>
</build>
<profiles>
<profile>
<id>local</id>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-clean-plugin</artifactId>
<configuration>
<excludeDefaultDirectories>false</excludeDefaultDirectories>
<filesets>
<fileset>
<directory>${native.basedir}</directory>
</fileset>
</filesets>
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<executions>
<execution>
<id>clone-tfhe-rs</id>
<goals>
<goal>exec</goal>
</goals>
<phase>initialize</phase>
<configuration>
<executable>git</executable>
<arguments>
<argument>clone</argument>
<argument>https://github.com/zama-ai/tfhe-rs.git</argument>
<argument>${tfhe-rs.basedir}</argument>
</arguments>
</configuration>
</execution>
<execution>
<id>generate-native-library</id>
<goals>
<goal>exec</goal>
</goals>
<phase>initialize</phase>
<configuration>
<workingDirectory>${tfhe-rs.basedir}</workingDirectory>
<executable>make</executable>
<arguments>
<argument>build_c_api</argument>
</arguments>
</configuration>
</execution>
<execution>
<id>generate-bindings-includes</id>
<goals>
<goal>exec</goal>
</goals>
<phase>initialize</phase>
<configuration>
<workingDirectory>${tfhe-rs.basedir}</workingDirectory>
<executable>jextract</executable>
<arguments>
<argument>target/release/tfhe.h</argument>
<argument>--dump-includes</argument>
<argument>jextract-includes.txt</argument>
</arguments>
</configuration>
</execution>
<execution>
<id>filter-bindings-includes</id>
<goals>
<goal>exec</goal>
</goals>
<phase>initialize</phase>
<configuration>
<workingDirectory>${tfhe-rs.basedir}</workingDirectory>
<executable>grep</executable>
<arguments>
<argument>tfhe</argument>
<argument>jextract-includes.txt</argument>
</arguments>
<outputFile>${tfhe-rs.basedir}/jextract-includes-filtered.txt</outputFile>
</configuration>
</execution>
<execution>
<id>generate-bindings</id>
<goals>
<goal>exec</goal>
</goals>
<phase>initialize</phase>
<configuration>
<workingDirectory>${tfhe-rs.basedir}</workingDirectory>
<executable>jextract</executable>
<arguments>
<argument>@jextract-includes-filtered.txt</argument>
<argument>target/release/tfhe.h</argument>
<argument>--header-class-name</argument>
<argument>TfheHeader</argument>
<argument>--target-package</argument>
<argument>io.github.rdlopes.tfhe.ffm</argument>
<argument>--output</argument>
<argument>${native-bindings.basedir}</argument>
</arguments>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<executions>
<execution>
<id>prepare-native-libraries</id>
<goals>
<goal>copy-resources</goal>
</goals>
<phase>initialize</phase>
<configuration>
<outputDirectory>${native-libs.basedir}/${os.detected.name}/${os.detected.arch}</outputDirectory>
<resources>
<resource>
<directory>${tfhe-rs.basedir}/target/release</directory>
<includes>
<include>*.h</include>
<include>*.dylib</include>
<include>*.so</include>
<include>*.dll</include>
</includes>
</resource>
</resources>
</configuration>
</execution>
<execution>
<id>copy-licence</id>
<goals>
<goal>copy-resources</goal>
</goals>
<phase>initialize</phase>
<configuration>
<outputDirectory>${native-libs.basedir}</outputDirectory>
<resources>
<resource>
<directory>${tfhe-rs.basedir}/tfhe</directory>
<includes>
<include>LICENSE</include>
</includes>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles>
</project>