Signal-Android/libsignal-service/build.gradle
2023-10-17 11:15:56 -04:00

183 lines
No EOL
4.5 KiB
Groovy

import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
apply plugin: 'java-library'
apply plugin: 'org.jetbrains.kotlin.jvm'
apply plugin: 'java-test-fixtures'
apply plugin: 'maven-publish'
apply plugin: 'signing'
apply plugin: 'idea'
apply plugin: 'org.jlleitschuh.gradle.ktlint'
apply plugin: 'com.squareup.wire'
archivesBaseName = "signal-service-java"
version = lib_signal_service_version_number
group = lib_signal_service_group_info
java {
withJavadocJar()
withSourcesJar()
sourceCompatibility = signalJavaVersion
targetCompatibility = signalJavaVersion
}
tasks.withType(KotlinCompile).configureEach {
kotlinOptions {
jvmTarget = signalKotlinJvmTarget
}
}
configurations {
ideaTestFixturesImplementation { extendsFrom testFixturesImplementation; canBeConsumed false; canBeResolved true }
}
afterEvaluate {
[
'runKtlintCheckOverMainSourceSet',
'runKtlintFormatOverMainSourceSet'
].forEach { taskName ->
tasks.named(taskName) {
mustRunAfter tasks.named('generateMainProtos')
}
}
}
ktlint {
version.set("0.49.1")
filter {
exclude { entry ->
entry.file.toString().contains("build/generated/source/wire")
}
}
}
dependencies {
api libs.google.libphonenumber
api libs.jackson.core
api libs.jackson.module.kotlin
implementation libs.libsignal.client
api libs.square.okhttp3
api libs.square.okio
implementation libs.google.jsr305
api libs.rxjava3.rxjava
implementation libs.kotlin.stdlib.jdk8
implementation project(":core-util-jvm")
testImplementation testLibs.junit.junit
testImplementation testLibs.assertj.core
testImplementation testLibs.conscrypt.openjdk.uber
testImplementation testLibs.mockito.core
testFixturesImplementation libs.libsignal.client
testFixturesImplementation testLibs.junit.junit
}
tasks.whenTaskAdded { task ->
if (task.name.equals("lint")) {
task.enabled = false
}
}
wire {
protoLibrary = true
kotlin {
javaInterop = true
}
sourcePath {
srcDir 'src/main/protowire'
}
custom {
// Comes from wire-handler jar project
schemaHandlerFactoryClass = "org.signal.wire.Factory"
}
}
idea {
module {
scopes.COMPILE.plus += [configurations.ideaTestFixturesImplementation]
}
}
def isReleaseBuild() {
return version.contains("SNAPSHOT") == false
}
def getReleaseRepositoryUrl() {
return hasProperty('sonatypeRepo') ? sonatypeRepo
: "https://oss.sonatype.org/service/local/staging/deploy/maven2/"
}
def getRepositoryUsername() {
return hasProperty('whisperSonatypeUsername') ? whisperSonatypeUsername : ""
}
def getRepositoryPassword() {
return hasProperty('whisperSonatypePassword') ? whisperSonatypePassword : ""
}
publishing {
publications {
mavenJava(MavenPublication) {
artifactId = 'signal-service-java'
from components.java
pom {
name = 'signal-service-java'
packaging = 'jar'
description = 'Signal Service communication library for Java'
url = 'https://github.com/WhisperSystems/libsignal-service-java'
scm {
url = 'scm:git@github.com:WhisperSystems/libsignal-service-java.git'
connection = 'scm:git@github.com:WhisperSystems/libsignal-service-java.git'
developerConnection = 'scm:git@github.com:WhisperSystems/libsignal-service-java.git'
}
licenses {
license {
name = 'GPLv3'
url = 'https://www.gnu.org/licenses/gpl-3.0.txt'
distribution = 'repo'
}
}
developers {
developer {
name = 'Moxie Marlinspike'
}
}
}
}
}
repositories {
maven {
url = getReleaseRepositoryUrl()
credentials {
username getRepositoryUsername()
password getRepositoryPassword()
}
}
}
}
signing {
required { isReleaseBuild() && gradle.taskGraph.hasTask("uploadArchives") }
sign publishing.publications.mavenJava
}
task installArchives(type: Upload) {
description "Installs the artifacts to the local Maven repository."
configuration = configurations['archives']
repositories {
mavenLocal()
}
}