diff --git a/build.gradle.kts b/build.gradle.kts index 242b739..cb7a579 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,10 +1,51 @@ +import java.util.Properties + plugins { id("com.android.library") id("org.jetbrains.kotlin.android") + `maven-publish` + signing +} + +val groupName = "app.priceguard" +val packageName = "materialchart" +val versionCode = "0.1.1" + +group = "$groupName.$packageName" +version = versionCode + +extra["signing.keyId"] = null +ext["signing.password"] = null +ext["signing.secretKeyRingFile"] = null +ext["ossrhUsername"] = null +ext["ossrhPassword"] = null + +val secretPropsFile = project.rootProject.file("local.properties") +if (secretPropsFile.exists()) { + secretPropsFile.reader().use { + Properties().apply { + load(it) + } + }.onEach { (name, value) -> + ext[name.toString()] = value + } +} else { + ext["signing.keyId"] = System.getenv("SIGNING_KEY_ID") + ext["signing.password"] = System.getenv("SIGNING_PASSWORD") + ext["signing.secretKeyRingFile"] = System.getenv("SIGNING_SECRET_KEY_RING_FILE") + ext["ossrhUsername"] = System.getenv("OSSRH_USERNAME") + ext["ossrhPassword"] = System.getenv("OSSRH_PASSWORD") + println(ext["ossrhUsername"]) } +val javadocJar by tasks.registering(Jar::class) { + archiveClassifier.set("javadoc") +} + +fun getExtraString(name: String) = ext[name]?.toString() + android { - namespace = "app.priceguard.materialchart" + namespace = "$groupName.$packageName" compileSdk = 34 defaultConfig { @@ -31,14 +72,80 @@ android { kotlinOptions { jvmTarget = JavaVersion.VERSION_17.toString() } + + publishing { + singleVariant("release") { + withSourcesJar() + withJavadocJar() + } + } } -dependencies { +publishing { + publications { + afterEvaluate { + create("release") { + from(components["release"]) + groupId = groupName + artifactId = packageName + version = versionCode + pom { + name.set(artifactId) + description.set("Simple Material You style Android line chart library.") + url.set("https://github.com/Taewan-P/material-android-chart") + licenses { + license { + name.set("MIT License") + url.set("https://opensource.org/license/mit/") + } + } + developers { + developer { + name.set("Taewan Park") + email.set("admin@priceguard.app") + } + } + scm { + url.set(pom.url.get()) + connection.set("scm:git:${url.get()}.git") + developerConnection.set("scm:git:${url.get()}.git") + } + } + } + } + } + + repositories { + maven { + name = "SonatypeSnapshot" + setUrl("https://s01.oss.sonatype.org/content/repositories/snapshots/") + credentials { + username = getExtraString("ossrhUsername") + password = getExtraString("ossrhPassword") + } + } + + maven { + name = "Sonatype" + setUrl("https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/") + credentials { + username = getExtraString("ossrhUsername") + password = getExtraString("ossrhPassword") + } + } + } +} + +signing { + afterEvaluate { + sign(publishing.publications["release"]) + } +} + + +dependencies { implementation("androidx.core:core-ktx:1.12.0") implementation("androidx.appcompat:appcompat:1.6.1") implementation("com.google.android.material:material:1.10.0") - testImplementation("junit:junit:4.13.2") - androidTestImplementation("androidx.test.ext:junit:1.1.5") - androidTestImplementation("androidx.test.espresso:espresso-core:3.5.1") } \ No newline at end of file