jitllm
Used in:
components
- OverviewOverview
- VersionsVersions
- DependentsDependents
- DependenciesDependencies
<dependency>
<groupId>io.github.beehive-lab</groupId>
<artifactId>jitllm</artifactId>
<version>1.0.2-jdk22plus</version>
</dependency><?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<groupId>io.github.beehive-lab</groupId>
<artifactId>jitllm</artifactId>
<version>1.0.2-jdk22plus</version>
<name>jitllm</name>
<description>LLM inference and serving for the JVM, GPU-accelerated with TornadoVM</description>
<url>https://github.com/beehive-lab/jitllm</url>
<licenses>
<license>
<name>MIT License</name>
<url>https://opensource.org/licenses/MIT</url>
<distribution>repo</distribution>
</license>
</licenses>
<developers>
<developer>
<id>mikepapadim</id>
<name>Michalis Papadimitriou</name>
<url>https://github.com/mikepapadim</url>
</developer>
</developers>
<scm>
<connection>scm:git:git://github.com/beehive-lab/jitllm.git</connection>
<developerConnection>scm:git:ssh://github.com/beehive-lab/jitllm.git</developerConnection>
<url>https://github.com/beehive-lab/jitllm</url>
</scm>
<properties>
<tornadovm.version>${tornadovm.base.version}${tornadovm.jdk.suffix}${tornadovm.dev.qualifier}</tornadovm.version>
<maven.compiler.source>22</maven.compiler.source>
<maven.javadoc.skip>true</maven.javadoc.skip>
<revision>1.0.2</revision>
<jdk.version.suffix>-jdk21</jdk.version.suffix>
<maven.compiler.target>22</maven.compiler.target>
<archunit.version>1.4.2</archunit.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<tornadovm.release.version>7.0.1</tornadovm.release.version>
<gpg.skip>true</gpg.skip>
<tornadovm.base.version>6.1.1</tornadovm.base.version>
<tornadovm.jdk.suffix>-jdk21</tornadovm.jdk.suffix>
<tornadovm.dev.qualifier>-dev</tornadovm.dev.qualifier>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.tngtech.archunit</groupId>
<artifactId>archunit-junit4</artifactId>
<version>${archunit.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.github.beehive-lab</groupId>
<artifactId>tornado-api</artifactId>
<version>${tornadovm.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>io.github.beehive-lab</groupId>
<artifactId>tornado-cublas</artifactId>
<version>${tornadovm.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>io.github.beehive-lab</groupId>
<artifactId>tornado-cudnn</artifactId>
<version>${tornadovm.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>io.github.beehive-lab</groupId>
<artifactId>tornado-runtime</artifactId>
<version>${tornadovm.version}</version>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.11.0</version>
<configuration>
<compilerArgs>
<arg>--add-modules</arg>
<arg>jdk.incubator.vector</arg>
</compilerArgs>
</configuration>
</plugin>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.2.2</version>
<configuration>
<excludes>
<exclude>**/*AccelTest.java</exclude>
</excludes>
<argLine>--enable-preview --add-modules jdk.incubator.vector</argLine>
</configuration>
</plugin>
<plugin>
<artifactId>maven-enforcer-plugin</artifactId>
<version>3.5.0</version>
<executions>
<execution>
<id>enforce-supported-jdk</id>
<phase>validate</phase>
<goals>
<goal>enforce</goal>
</goals>
<configuration>
<rules>
<requireJavaVersion>
<version>[21,)</version>
<message>jitllm builds on JDK 21 or newer. JDK 21 produces jitllm:*-jdk21 against tornado *-jdk21; JDK 22+ produces jitllm:*-jdk22plus (Java 22 bytecode) against tornado *-jdk22plus.</message>
</requireJavaVersion>
</rules>
<fail>true</fail>
</configuration>
</execution>
<execution>
<id>ban-runtime-dependencies</id>
<phase>validate</phase>
<goals>
<goal>enforce</goal>
</goals>
<configuration>
<rules>
<bannedDependencies>
<excludes>
<exclude>*:*:*:*:compile</exclude>
<exclude>*:*:*:*:runtime</exclude>
</excludes>
<message>jitllm must not have compile- or runtime-scope dependencies: the TornadoVM SDK supplies TornadoVM and its dependencies at runtime (declare them provided), and a bundled or inherited copy collides with the SDK's modules (issue #176).</message>
</bannedDependencies>
</rules>
<fail>true</fail>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>flatten-maven-plugin</artifactId>
<version>1.6.0</version>
<executions>
<execution>
<id>flatten</id>
<phase>process-resources</phase>
<goals>
<goal>flatten</goal>
</goals>
</execution>
<execution>
<id>flatten.clean</id>
<phase>clean</phase>
<goals>
<goal>clean</goal>
</goals>
</execution>
</executions>
<configuration>
<updatePomFile>true</updatePomFile>
<flattenMode>resolveCiFriendliesOnly</flattenMode>
</configuration>
</plugin>
<plugin>
<artifactId>maven-jar-plugin</artifactId>
<version>3.4.2</version>
<configuration>
<archive>
<manifest>
<mainClass>org.beehive.jitllm.JitllmApp</mainClass>
</manifest>
<manifestEntries>
<Automatic-Module-Name>org.beehive.jitllm</Automatic-Module-Name>
</manifestEntries>
</archive>
</configuration>
</plugin>
</plugins>
</build>
<profiles>
<profile>
<id>accel-tests</id>
<build>
<plugins>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<excludes combine.self="override" />
<includes>
<include>**/*AccelTest.java</include>
</includes>
<useModulePath>false</useModulePath>
<reuseForks>false</reuseForks>
<argLine>@${env.TORNADOVM_HOME}/tornado-argfile
--add-modules jdk.incubator.vector
-da:tornado.graal...
-Dtornado.recover.bailout=False
-Djitllm.deviceSample=false
-Dtornado.device.memory=20GB
-Dtornado.cuda.priority=100
-Dtornado.opencl.priority=0</argLine>
</configuration>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>jdk21</id>
<activation>
<jdk>[21,22)</jdk>
</activation>
<build>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<compilerArgs combine.children="append">
<arg>--enable-preview</arg>
</compilerArgs>
</configuration>
</plugin>
</plugins>
</build>
<properties>
<jdk.version.suffix>-jdk21</jdk.version.suffix>
<maven.compiler.target>21</maven.compiler.target>
<tornadovm.version>${tornadovm.base.version}${tornadovm.jdk.suffix}${tornadovm.dev.qualifier}</tornadovm.version>
<maven.compiler.source>21</maven.compiler.source>
<tornadovm.jdk.suffix>-jdk21</tornadovm.jdk.suffix>
</properties>
</profile>
<profile>
<id>jdk22plus</id>
<activation>
<jdk>[22,)</jdk>
</activation>
<properties>
<maven.compiler.release>22</maven.compiler.release>
<jdk.version.suffix>-jdk22plus</jdk.version.suffix>
<maven.compiler.target>22</maven.compiler.target>
<tornadovm.version>${tornadovm.base.version}${tornadovm.jdk.suffix}${tornadovm.dev.qualifier}</tornadovm.version>
<maven.compiler.source>22</maven.compiler.source>
<tornadovm.jdk.suffix>-jdk22plus</tornadovm.jdk.suffix>
</properties>
</profile>
<profile>
<id>release</id>
<build>
<plugins>
<plugin>
<artifactId>maven-enforcer-plugin</artifactId>
<version>3.5.0</version>
<executions>
<execution>
<id>enforce-release-tornadovm</id>
<phase>validate</phase>
<goals>
<goal>enforce</goal>
</goals>
<configuration>
<rules>
<requireProperty>
<property>tornadovm.release.version</property>
<regex>[0-9]+\.[0-9]+\.[0-9]+</regex>
<regexMessage>tornadovm.release.version must be a published TornadoVM release X.Y.Z; a release cannot depend on a local develop build (-dev). Set it with -Dtornadovm.release.version=X.Y.Z (prepare-release.yml does).</regexMessage>
</requireProperty>
<requireProperty>
<property>tornadovm.version</property>
<regex>[0-9]+\.[0-9]+\.[0-9]+-jdk(21|22plus)</regex>
<regexMessage>A release must resolve TornadoVM release coordinates (X.Y.Z-jdk21 or X.Y.Z-jdk22plus), not development ones.</regexMessage>
</requireProperty>
</rules>
<fail>true</fail>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-source-plugin</artifactId>
<version>3.3.1</version>
<executions>
<execution>
<id>attach-sources</id>
<goals>
<goal>jar-no-fork</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-javadoc-plugin</artifactId>
<version>3.6.3</version>
<executions>
<execution>
<id>attach-javadocs</id>
<phase>package</phase>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
<configuration>
<source>${maven.compiler.source}</source>
<release>${maven.compiler.source}</release>
<additionalJOptions>
<additionalJOption>--add-modules</additionalJOption>
<additionalJOption>jdk.incubator.vector</additionalJOption>
</additionalJOptions>
<additionalOptions>
<additionalOption>--add-modules jdk.incubator.vector</additionalOption>
</additionalOptions>
<failOnError>false</failOnError>
<failOnWarnings>false</failOnWarnings>
<doclint>none</doclint>
</configuration>
</plugin>
<plugin>
<artifactId>maven-gpg-plugin</artifactId>
<version>3.2.4</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>0.8.0</version>
<extensions>true</extensions>
<configuration>
<publishingServerId>central</publishingServerId>
<autoPublish>true</autoPublish>
</configuration>
</plugin>
</plugins>
</build>
<properties>
<gpg.skip>false</gpg.skip>
<tornadovm.base.version>${tornadovm.release.version}</tornadovm.base.version>
<maven.javadoc.skip>false</maven.javadoc.skip>
<tornadovm.dev.qualifier></tornadovm.dev.qualifier>
</properties>
</profile>
<profile>
<id>spotless</id>
<build>
<plugins>
<plugin>
<groupId>com.diffplug.spotless</groupId>
<artifactId>spotless-maven-plugin</artifactId>
<version>2.44.4</version>
<configuration>
<ratchetFrom>origin/main</ratchetFrom>
<java>
<includes>
<include>src/main/java/**/*.java</include>
<include>src/test/java/**/*.java</include>
</includes>
<excludes>
<exclude>**/target/**</exclude>
</excludes>
<googleJavaFormat>
<version>1.19.2</version>
<style>AOSP</style>
</googleJavaFormat>
<endWithNewline />
<trimTrailingWhitespace />
</java>
<pom>
<includes>
<include>pom.xml</include>
</includes>
<sortPom>
<nrOfIndentSpace>4</nrOfIndentSpace>
<expandEmptyElements>false</expandEmptyElements>
</sortPom>
</pom>
<markdown>
<includes>
<include>**/*.md</include>
</includes>
<excludes>
<exclude>**/target/**</exclude>
</excludes>
</markdown>
<format>
<name>props</name>
<includes>
<include>src/**/*.properties</include>
</includes>
<excludes>
<exclude>**/target/**</exclude>
</excludes>
<trimTrailingWhitespace />
<endWithNewline />
</format>
</configuration>
</plugin>
</plugins>
</build>
</profile>
</profiles>
</project>