plugins { id 'java-library' id 'maven-publish' id 'signing' id 'org.jetbrains.kotlin.jvm' } sourceCompatibility = 17 archivesBaseName = "libsignal-server" repositories { mavenCentral() mavenLocal() } sourceSets { main { java { // Include libsignal sources shared between the client and server srcDir '../shared/java' } kotlin { srcDir 'src/main/java' // Include libsignal sources shared between the client and server srcDir '../shared/java' } resources { srcDir '../shared/resources' } } test { java { srcDir '../shared/test/java' } kotlin { srcDir 'src/test/java' srcDir '../shared/test/java' } } } dependencies { testImplementation 'junit:junit:4.13' } test { jvmArgs '-Xcheck:jni' testLogging { events 'passed','skipped','failed' showStandardStreams = true showExceptions true exceptionFormat 'full' showCauses true showStackTraces true } } java { withSourcesJar() } sourcesJar { // Cut down on artifact size by leaving these out of the sources jar. exclude '*.dll' exclude '*.dylib' exclude '*.so' } task dokkaHtmlJar(type: Jar) { dependsOn(dokkaHtml) from(dokkaHtml) archiveClassifier.set("dokka") } task dokkaJavadocJar(type: Jar) { dependsOn(dokkaJavadoc) from(dokkaJavadoc) archiveClassifier.set("javadoc") } processResources { dependsOn ':makeJniLibrariesServer' } // MARK: Publishing publishing { publications { mavenJava(MavenPublication) { artifactId = archivesBaseName from components.java artifact dokkaHtmlJar artifact dokkaJavadocJar pom { name = archivesBaseName description = 'Signal Protocol cryptography library for Java (server-side)' url = 'https://github.com/signalapp/libsignal' scm { url = 'scm:git@github.com:signalapp/libsignal.git' connection = 'scm:git@github.com:signalapp/libsignal.git' developerConnection = 'scm:git@github.com:signalapp/libsignal.git' } licenses { license { name = 'AGPLv3' url = 'https://www.gnu.org/licenses/agpl-3.0.txt' } } developers { developer { name = 'Signal Messenger LLC' } } } } } } setUpSigningKey(signing) signing { required { isReleaseBuild() && gradle.taskGraph.hasTask(":server:publish") } sign publishing.publications.mavenJava }