Skip to content

Commit

Permalink
build: Migrate publication to precompiled build script
Browse files Browse the repository at this point in the history
Also add gradle-nexus.publish-plugin
  • Loading branch information
osipxd committed Apr 10, 2024
1 parent fcb10e5 commit 230f5ab
Show file tree
Hide file tree
Showing 16 changed files with 129 additions and 163 deletions.
18 changes: 15 additions & 3 deletions build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,15 +1,27 @@
// Top-level build file where you can add configuration options common to all sub-projects/modules.
subprojects {
version = getLibVersion()
group = "com.redmadrobot.debug"
plugins {
id("io.github.gradle-nexus.publish-plugin") version "2.0.0"
}

subprojects {
tasks.withType<org.jetbrains.kotlin.gradle.tasks.KotlinCompile>().configureEach {
kotlinOptions.freeCompilerArgs += listOf(
"-opt-in=com.redmadrobot.debug_panel_core.annotation.DebugPanelInternal"
)
}
}

nexusPublishing {
// Uncomment if you need to release artifacts uploaded using "publish" task.
// repositoryDescription.set("Implicitly created (auto staging).")
repositories {
sonatype {
nexusUrl.set(uri("https://s01.oss.sonatype.org/service/local/"))
snapshotRepositoryUrl.set(uri("https://s01.oss.sonatype.org/content/repositories/snapshots/"))
}
}
}

tasks.register("clean", Delete::class) {
delete(rootProject.layout.buildDirectory)
}
9 changes: 0 additions & 9 deletions buildSrc/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -9,15 +9,6 @@ repositories {
mavenCentral()
}

gradlePlugin {
plugins {
create("PublishPlugin") {
id = "publishPlugin"
implementationClass = "com.redmadrobot.build.PublishPlugin"
}
}
}

dependencies {
implementation(kotlin("gradle-plugin", version = "1.9.23"))
implementation("com.android.tools.build:gradle:8.3.2")
Expand Down
4 changes: 0 additions & 4 deletions buildSrc/src/main/kotlin/Project.kt
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,3 @@ object Project {
const val projectRules = "proguard-rules.pro"
}
}

fun Project.getLibVersion(): String = Properties().apply {
load(File("$rootDir/gradle/publish.properties").inputStream())
}.getProperty("lib_version")
136 changes: 0 additions & 136 deletions buildSrc/src/main/kotlin/PublishPlugin.kt

This file was deleted.

95 changes: 95 additions & 0 deletions buildSrc/src/main/kotlin/convention-publish.gradle.kts
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
import internal.android
import java.util.Properties

plugins {
id("maven-publish")
id("signing")
}

android {
publishing {
singleVariant("release") {
withSourcesJar()
}
}
}

private val publishProperties by lazy {
rootProject.file("gradle/publish.properties").inputStream()
.use { Properties().apply { load(it) } }
}
val libraryName by lazy {
val properties = project.file("library.properties").inputStream()
.use { Properties().apply { load(it) } }
properties.getProperty("lib_name")
}

publishing {
publications.create<MavenPublication>("release") {
artifactId = libraryName

afterEvaluate { from(components["release"]) }

pom {
name = libraryName
description = provider { project.description }
url = publishProperties.getProperty("home_page")

licenses {
license {
name = publishProperties.getProperty("license_name")
url = publishProperties.getProperty("license_url")
}
}

developers {
developer {
id = "Zestxx"
name = "Roman Choriev"
email = "[email protected]"
}
}

contributors {
contributor {
name = "Osip Fatkullin"
email = "[email protected]"
}
contributor {
name = "Alexandr Anisimov"
email = "[email protected]"
}
contributor {
name = "Dmitry trabo"
email = "[email protected]"
}
}

scm {
connection = "scm:git:git://github.com/RedMadRobot/debug-panel-android.git"
developerConnection = "scm:git:ssh://github.com/RedMadRobot/debug-panel-android.git"
url = publishProperties.getProperty("home_page")
}
}
}

repositories {
mavenLocal()
maven {
name = "OSSRH"
url = project.uri(publishProperties.getProperty("sonatype_repo"))

credentials {
username = System.getenv("OSSRH_USER")
password = System.getenv("OSSRH_PASSWORD")
}
}
}
}

afterEvaluate {
signing {
useGpgCmd()
sign(publishing.publications["release"])
}
}
8 changes: 8 additions & 0 deletions buildSrc/src/main/kotlin/internal/accessors.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package internal

import com.android.build.api.dsl.LibraryExtension
import org.gradle.api.plugins.ExtensionAware

internal fun ExtensionAware.android(configure: LibraryExtension.() -> Unit) {
extensions.configure<LibraryExtension>("android", configure)
}
2 changes: 1 addition & 1 deletion debug-panel-common/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ plugins {
id(Plugins.Android.libraryPlagin)
kotlin(Plugins.Kotlin.androidPlugin)
kotlin(Plugins.Kotlin.kapt)
id("publishPlugin")
id("convention-publish")
}

description = "Debug panel common components"
Expand Down
2 changes: 1 addition & 1 deletion debug-panel-core/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ plugins {
id(Plugins.Android.libraryPlagin)
kotlin(Plugins.Kotlin.androidPlugin)
kotlin(Plugins.Kotlin.kapt)
id("publishPlugin")
id("convention-publish")
}

description = "Debug panel core library"
Expand Down
2 changes: 1 addition & 1 deletion debug-panel-no-op/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
plugins {
id(Plugins.Android.libraryPlagin)
kotlin(Plugins.Kotlin.androidPlugin)
id("publishPlugin")
id("convention-publish")
}

description = "Debug panel no-op dependency module"
Expand Down
3 changes: 3 additions & 0 deletions gradle.properties
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
# Project-wide Gradle settings.
group=com.redmadrobot.debug
version=0.7.6

# IDE (e.g. Android Studio) users:
# Gradle settings configured through the IDE *will override*
# any settings specified in this file.
Expand Down
3 changes: 0 additions & 3 deletions gradle/publish.properties
Original file line number Diff line number Diff line change
@@ -1,9 +1,6 @@
home_page=https://github.com/RedMadRobot/debug-panel-android
group_id=com.redmadrobot.debug

sonatype_repo=https://s01.oss.sonatype.org/service/local/staging/deploy/maven2

license_name=MIT License
license_url=http://opensource.org/licenses/MIT

lib_version=0.7.5
2 changes: 1 addition & 1 deletion plugins/accounts-plugin/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ plugins {
id(Plugins.Android.libraryPlagin)
kotlin(Plugins.Kotlin.androidPlugin)
kotlin(Plugins.Kotlin.kapt)
id("publishPlugin")
id("convention-publish")
}

description = "Plugin for switching user accounts"
Expand Down
2 changes: 1 addition & 1 deletion plugins/app-settings-plugin/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ plugins {
id(Plugins.Android.libraryPlagin)
kotlin(Plugins.Kotlin.androidPlugin)
kotlin(Plugins.Kotlin.kapt)
id("publishPlugin")
id("convention-publish")
}

description = "Plugin that helps to change the values of shared preferences"
Expand Down
2 changes: 1 addition & 1 deletion plugins/flipper-plugin/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ plugins {
id(Plugins.Android.libraryPlagin)
kotlin(Plugins.Kotlin.androidPlugin)
kotlin(Plugins.Kotlin.kapt)
id("publishPlugin")
id("convention-publish")
}

description = "Plugin for flipper library integration"
Expand Down
2 changes: 1 addition & 1 deletion plugins/servers-plugin/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ plugins {
id(Plugins.Android.libraryPlagin)
kotlin(Plugins.Kotlin.androidPlugin)
kotlin(Plugins.Kotlin.kapt)
id("publishPlugin")
id("convention-publish")
}

description = "Plugin for switching server hosts"
Expand Down
2 changes: 1 addition & 1 deletion plugins/variable-plugin/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ plugins {
id(Plugins.Android.libraryPlagin)
kotlin(Plugins.Kotlin.androidPlugin)
kotlin(Plugins.Kotlin.kapt)
id("publishPlugin")
id("convention-publish")
}

description = "Plugin allows you to change some variables without rebuilding/restarting the project"
Expand Down

0 comments on commit 230f5ab

Please sign in to comment.