android/source/build.gradle.kts (92 lines of code) (raw):
plugins {
`maven-publish`
signing
alias(libs.plugins.guardian.library.android)
alias(libs.plugins.guardian.compose.library)
alias(libs.plugins.metalava)
}
detekt {
baseline = file("detekt-baseline.xml")
}
// Generates API signature files for use in API compatibility checks, and for automatic versioning.
metalava {
javaSourceLevel.set(JavaVersion.toVersion(libs.versions.java.get()))
filename.set("api/$name-api.txt")
apiCompatAnnotations.set(listOf("androidx.compose.runtime.Composable"))
}
android {
namespace = libs.versions.group.get()
defaultConfig {
consumerProguardFiles("consumer-rules.pro")
}
buildTypes {
release {
isMinifyEnabled = false
proguardFiles(
getDefaultProguardFile("proguard-android-optimize.txt"),
"proguard-rules.pro",
)
}
}
// Create a single variant for publishing called "release". Add separate jars for javadoc
// and sources.
publishing {
singleVariant("release") {
withSourcesJar()
withJavadocJar()
}
}
}
dependencies {
}
publishing {
publications {
register<MavenPublication>("release") {
groupId = libs.versions.group.get()
artifactId = "source-android"
version = libs.versions.libraryVersion.get()
pom {
name.set("Source Android")
description.set("The Guardian's design system library for Android")
url.set("https://github.com/guardian/source-apps")
packaging = "aar"
licenses {
license {
name.set("Apache License, Version 2.0")
url.set("https://www.apache.org/licenses/LICENSE-2.0.txt")
}
}
developers {
developer {
id.set("ab-gnm")
name.set("Aditya Bhaskar")
email.set("aditya.bhaskar@guardian.co.uk")
url.set("https://github.com/ab-gnm")
}
}
organization {
name.set("Guardian News & Media")
url.set("https://www.theguardian.com")
}
scm {
connection.set("scm:git:github.com/guardian/source-apps.git")
developerConnection.set("scm:git:ssh://github.com/guardian/source-apps.git")
url.set("https://github.com/guardian/source-apps/tree/main")
}
}
// Use the artifacts called "release" for publishing.
afterEvaluate {
from(components["release"])
}
}
}
repositories {
// Adds a task for publishing locally to the build directory.
// Use as `./gradlew :source:publishReleasePublicationToGusourceRepository`
maven {
name = "gusource"
url = uri("${project.layout.buildDirectory.asFile.get().path}/gusource")
}
}
}
signing {
useInMemoryPgpKeys(
System.getenv("AUTOMATED_MAVEN_RELEASE_PGP_SECRET") ?: "",
// We use a passwordless key so the an empty string is used as password here.
"",
)
sign(publishing.publications)
}