Files
traccar/build.gradle
2025-12-07 11:10:48 -08:00

167 lines
6.8 KiB
Groovy

plugins {
id "java"
id "checkstyle"
id "com.google.protobuf" version "0.9.5"
id "org.kordamp.gradle.project-enforcer" version "0.14.0"
id "com.github.ben-manes.versions" version "0.53.0"
}
repositories {
mavenCentral()
}
java {
sourceCompatibility = JavaVersion.VERSION_17
targetCompatibility = JavaVersion.VERSION_17
}
compileJava.options.encoding = "UTF-8"
jar.destinationDirectory = file("$projectDir/target")
checkstyle {
toolVersion = "10.23.1"
configFile = file("gradle/checkstyle.xml")
checkstyleTest.enabled = false
}
dependencyUpdates {
revision = "release"
rejectVersionIf {
[
it.candidate.group == 'io.netty' && it.candidate.version ==~ /^5\..*/,
it.candidate.version ==~ /(?i).*(alpha|beta|rc|m\d+|preview|snapshot|ea|dev).*/,
it.candidate.group.startsWith('com.fasterxml.jackson.'),
it.candidate.group == 'org.glassfish.hk2',
it.candidate.group == 'org.jxls',
].any { it }
}
}
enforce {
// noinspection UnnecessaryQualifiedReference
rule(enforcer.rules.EnforceBytecodeVersion) { r ->
r.maxJdkVersion = "17"
}
}
ext {
guiceVersion = "7.0.0"
jettyVersion = "12.1.5"
jerseyVersion = "4.0.0"
nettyVersion = "4.2.7.Final"
protobufVersion = "4.33.2"
jxlsVersion = "2.14.0" // version 3 has breaking changes
junixsocketVersion = "2.10.1"
}
def resolveTransitiveVersion = { String root, String group, String name ->
def dc = configurations.detachedConfiguration(dependencies.create(root))
dc.transitive = true
def artifact = dc.resolvedConfiguration.resolvedArtifacts.find {
it.moduleVersion.id.group == group && it.name == name
}
if (!artifact) throw new GradleException("Couldn't resolve $group:$name from $root")
artifact.moduleVersion.id.version
}
ext.jacksonVersion = resolveTransitiveVersion(
"org.glassfish.jersey.media:jersey-media-json-jackson:${jerseyVersion}",
"com.fasterxml.jackson.core",
"jackson-databind")
ext.hk2Version = resolveTransitiveVersion(
"org.glassfish.jersey.inject:jersey-hk2:${jerseyVersion}",
"org.glassfish.hk2",
"hk2-locator")
protobuf {
protoc {
artifact = "com.google.protobuf:protoc:$protobufVersion"
}
}
dependencies {
implementation "commons-codec:commons-codec:1.20.0"
implementation "com.h2database:h2:2.4.240"
implementation "com.mysql:mysql-connector-j:9.5.0"
implementation "org.mariadb.jdbc:mariadb-java-client:3.5.6"
implementation "org.postgresql:postgresql:42.7.8"
implementation "com.kohlschutter.junixsocket:junixsocket-core:$junixsocketVersion"
implementation "com.kohlschutter.junixsocket:junixsocket-mysql:$junixsocketVersion"
implementation "com.microsoft.sqlserver:mssql-jdbc:13.2.1.jre11"
implementation "com.zaxxer:HikariCP:7.0.2"
implementation "io.netty:netty-buffer:$nettyVersion"
implementation "io.netty:netty-codec:$nettyVersion"
implementation "io.netty:netty-codec-http:$nettyVersion"
implementation "io.netty:netty-codec-mqtt:$nettyVersion"
implementation "io.netty:netty-handler:$nettyVersion"
implementation "io.netty:netty-resolver:$nettyVersion"
implementation "io.netty:netty-resolver-dns:$nettyVersion"
implementation "io.netty:netty-transport:$nettyVersion"
implementation "org.slf4j:slf4j-jdk14:2.0.17"
implementation "com.google.inject:guice:$guiceVersion"
implementation "com.google.inject.extensions:guice-servlet:$guiceVersion"
implementation "org.glassfish:jakarta.json:2.0.1"
implementation "com.sun.mail:jakarta.mail:2.0.2"
implementation "org.eclipse.jetty:jetty-server:$jettyVersion"
implementation "org.eclipse.jetty.compression:jetty-compression-server:$jettyVersion"
implementation "org.eclipse.jetty.compression:jetty-compression-gzip:$jettyVersion"
implementation "org.eclipse.jetty.ee10:jetty-ee10-servlet:$jettyVersion"
implementation "org.eclipse.jetty.ee10:jetty-ee10-servlets:$jettyVersion"
implementation "org.eclipse.jetty.ee10:jetty-ee10-proxy:$jettyVersion"
implementation "org.eclipse.jetty.ee10.websocket:jetty-ee10-websocket-jetty-server:$jettyVersion"
implementation "org.eclipse.jetty.ee10.websocket:jetty-ee10-websocket-jakarta-server:$jettyVersion"
implementation "org.glassfish.jersey.containers:jersey-container-servlet:$jerseyVersion"
implementation "org.glassfish.jersey.media:jersey-media-json-jackson:$jerseyVersion"
implementation "org.glassfish.jersey.inject:jersey-hk2:$jerseyVersion"
implementation "org.glassfish.hk2:guice-bridge:$hk2Version"
implementation "com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider:$jacksonVersion"
implementation "com.fasterxml.jackson.datatype:jackson-datatype-jakarta-jsonp:$jacksonVersion"
implementation "com.fasterxml.jackson.module:jackson-module-blackbird:$jacksonVersion"
implementation "org.liquibase:liquibase-core:5.0.1"
implementation "org.apache.commons:commons-jexl3:3.6.0"
implementation "org.jxls:jxls:$jxlsVersion"
implementation "org.jxls:jxls-poi:$jxlsVersion"
implementation "org.apache.velocity:velocity-engine-core:2.4.1"
implementation "org.apache.velocity.tools:velocity-tools-generic:3.1"
implementation "org.apache.commons:commons-collections4:4.5.0"
implementation "org.mnode.ical4j:ical4j:4.2.1"
implementation "org.locationtech.spatial4j:spatial4j:0.8"
implementation "org.locationtech.jts:jts-core:1.20.0"
implementation "net.java.dev.jna:jna-platform:5.18.1"
implementation "com.github.jnr:jnr-posix:3.1.21"
implementation "com.google.protobuf:protobuf-java:$protobufVersion"
implementation "software.amazon.awssdk:sns:2.40.3"
implementation "org.apache.kafka:kafka-clients:4.1.1"
implementation "com.hivemq:hivemq-mqtt-client:1.3.10"
implementation "redis.clients:jedis:7.1.0"
implementation "com.google.firebase:firebase-admin:9.7.0"
implementation "com.nimbusds:oauth2-oidc-sdk:11.30.1"
implementation "com.rabbitmq:amqp-client:5.28.0"
implementation "com.warrenstrange:googleauth:1.5.0"
implementation "com.google.openlocationcode:openlocationcode:1.0.4"
implementation "io.modelcontextprotocol.sdk:mcp:0.17.0"
testImplementation "org.mockito:mockito-core:5.20.0"
testImplementation "org.junit.jupiter:junit-jupiter:6.0.1"
testRuntimeOnly "org.junit.platform:junit-platform-launcher"
}
test {
useJUnitPlatform()
}
tasks.register('copyDependencies', Copy) {
into "$projectDir/target/lib"
from configurations.runtimeClasspath
}
assemble.dependsOn(copyDependencies)
jar {
manifest {
attributes(
"Main-Class": "org.traccar.Main",
"Implementation-Version": "6.11.1",
"Class-Path": configurations.runtimeClasspath.files.collect { "lib/$it.name" }.join(" "))
}
}