plugins { id "java" id "checkstyle" id "com.google.protobuf" version "0.9.4" id "org.kordamp.gradle.project-enforcer" version "0.13.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.17.0" configFile = file("gradle/checkstyle.xml") checkstyleTest.enabled = false } enforce { // noinspection UnnecessaryQualifiedReference rule(enforcer.rules.EnforceBytecodeVersion) { r -> r.maxJdkVersion = "17" } } ext { guiceVersion = "7.0.0" jettyVersion = "11.0.21" jerseyVersion = "3.1.7" jacksonVersion = "2.17.2" // same version as jersey-media-json-jackson dependency protobufVersion = "4.27.2" jxlsVersion = "2.14.0" // version 3 requires java 17 junitVersion = "5.10.3" } protobuf { protoc { artifact = "com.google.protobuf:protoc:$protobufVersion" } } dependencies { implementation "commons-codec:commons-codec:1.17.1" implementation "com.h2database:h2:2.3.230" implementation "com.mysql:mysql-connector-j:9.0.0" implementation "org.mariadb.jdbc:mariadb-java-client:3.4.1" implementation "org.postgresql:postgresql:42.7.3" implementation "com.microsoft.sqlserver:mssql-jdbc:12.6.3.jre11" implementation "com.zaxxer:HikariCP:5.1.0" implementation "io.netty:netty-all:4.1.112.Final" implementation "org.slf4j:slf4j-jdk14:2.0.13" 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.1" implementation "org.eclipse.jetty:jetty-server:$jettyVersion" implementation "org.eclipse.jetty:jetty-servlet:$jettyVersion" implementation "org.eclipse.jetty:jetty-servlets:$jettyVersion" implementation "org.eclipse.jetty:jetty-webapp:$jettyVersion" implementation "org.eclipse.jetty:jetty-jndi:$jettyVersion" implementation "org.eclipse.jetty:jetty-proxy:$jettyVersion" implementation "org.eclipse.jetty.websocket:websocket-jetty-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:3.1.0" // same version as jersey-hk2 implementation "com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider:$jacksonVersion" implementation "com.fasterxml.jackson.datatype:jackson-datatype-jakarta-jsonp:$jacksonVersion" implementation "org.liquibase:liquibase-core:4.23.2" // upgrade has issues implementation "org.apache.commons:commons-jexl3:3.4.0" implementation "org.jxls:jxls:$jxlsVersion" implementation "org.jxls:jxls-poi:$jxlsVersion" implementation "org.apache.velocity:velocity-engine-core:2.3" implementation "org.apache.velocity.tools:velocity-tools-generic:3.1" implementation "org.apache.commons:commons-collections4:4.4" implementation "org.mnode.ical4j:ical4j:4.0.2" implementation "org.locationtech.spatial4j:spatial4j:0.8" implementation "org.locationtech.jts:jts-core:1.19.0" implementation "net.java.dev.jna:jna-platform:5.14.0" implementation "com.github.jnr:jnr-posix:3.1.19" implementation "com.google.protobuf:protobuf-java:$protobufVersion" implementation "com.amazonaws:aws-java-sdk-sns:1.12.765" implementation "org.apache.kafka:kafka-clients:3.8.0" implementation "com.hivemq:hivemq-mqtt-client:1.3.3" implementation "redis.clients:jedis:5.1.3" implementation "com.google.firebase:firebase-admin:9.3.0" implementation "com.nimbusds:oauth2-oidc-sdk:11.13" implementation "com.rabbitmq:amqp-client:5.21.0" implementation "com.warrenstrange:googleauth:1.5.0" implementation "com.google.openlocationcode:openlocationcode:1.0.4" testImplementation "org.junit.jupiter:junit-jupiter-api:$junitVersion" testImplementation "org.junit.jupiter:junit-jupiter-engine:$junitVersion" testImplementation "org.mockito:mockito-core:5.12.0" } 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.2", "Class-Path": configurations.runtimeClasspath.files.collect { "lib/$it.name" }.join(" ")) } }