Skip to content

Commit 77d2d6d

Browse files
authored
Configure Android Maven Central publishing (#179)
1 parent 55fc106 commit 77d2d6d

15 files changed

Lines changed: 376 additions & 256 deletions

File tree

.github/workflows/android-link.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@ jobs:
3131
java-version: '17'
3232
- name: Set up Gradle
3333
uses: gradle/actions/setup-gradle@50e97c2cd7a37755bbfafc9c5b7cafaece252f6e # v6.1.0
34+
with:
35+
validate-wrappers: true
3436
- name: Prepare local.properties
3537
working-directory: snapo-link-android
3638
run: |
@@ -56,6 +58,8 @@ jobs:
5658
java-version: '17'
5759
- name: Set up Gradle
5860
uses: gradle/actions/setup-gradle@50e97c2cd7a37755bbfafc9c5b7cafaece252f6e # v6.1.0
61+
with:
62+
validate-wrappers: true
5963
- name: Prepare local.properties
6064
working-directory: snapo-link-android
6165
run: |

snapo-link-android/build-logic/build.gradle.kts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ dependencies {
99
implementation(libs.gradle)
1010
implementation(libs.kotlin.gradle.plugin)
1111
implementation(libs.detekt.gradle.plugin)
12+
implementation(libs.maven.publish.gradle.plugin)
1213
}
1314

1415
gradlePlugin {
@@ -21,6 +22,10 @@ gradlePlugin {
2122
id = "snapo.android.application"
2223
implementationClass = "com.openai.snapo.buildlogic.android.AndroidApplicationConventionPlugin"
2324
}
25+
register("snapoMavenPublish") {
26+
id = "snapo.maven.publish"
27+
implementationClass = "com.openai.snapo.buildlogic.publishing.MavenPublishConventionPlugin"
28+
}
2429
register("snapoDetekt") {
2530
id = "snapo.detekt"
2631
implementationClass = "com.openai.snapo.buildlogic.quality.DetektConventionPlugin"

snapo-link-android/build-logic/src/main/kotlin/com/openai/snapo/buildlogic/android/AndroidLibraryConventionPlugin.kt

Lines changed: 0 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,12 @@ import com.android.build.api.dsl.LibraryExtension
44
import org.gradle.api.JavaVersion
55
import org.gradle.api.Plugin
66
import org.gradle.api.Project
7-
import org.gradle.api.publish.PublishingExtension
8-
import org.gradle.api.publish.maven.MavenPublication
97
import org.gradle.kotlin.dsl.configure
10-
import org.gradle.kotlin.dsl.create
118
import org.gradle.kotlin.dsl.getByType
129

1310
class AndroidLibraryConventionPlugin : Plugin<Project> {
1411
override fun apply(target: Project) {
1512
target.pluginManager.apply("com.android.library")
16-
target.pluginManager.apply("maven-publish")
1713

1814
val extension = target.extensions.getByType<LibraryExtension>()
1915
extension.apply {
@@ -34,28 +30,6 @@ class AndroidLibraryConventionPlugin : Plugin<Project> {
3430
targetCompatibility = JavaVersion.VERSION_11
3531
}
3632

37-
publishing {
38-
singleVariant("release") {
39-
withSourcesJar()
40-
}
41-
}
42-
}
43-
44-
target.afterEvaluate {
45-
val releaseComponent = components.findByName("release") ?: return@afterEvaluate
46-
47-
extensions.configure<PublishingExtension> {
48-
publications {
49-
if (findByName("release") == null) {
50-
create<MavenPublication>("release") {
51-
from(releaseComponent)
52-
groupId = this@afterEvaluate.group.toString()
53-
artifactId = this@afterEvaluate.name
54-
version = this@afterEvaluate.version.toString()
55-
}
56-
}
57-
}
58-
}
5933
}
6034
}
6135
}
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
package com.openai.snapo.buildlogic.publishing
2+
3+
import com.vanniktech.maven.publish.AndroidSingleVariantLibrary
4+
import com.vanniktech.maven.publish.JavadocJar
5+
import com.vanniktech.maven.publish.MavenPublishBaseExtension
6+
import com.vanniktech.maven.publish.SourcesJar
7+
import org.gradle.api.Plugin
8+
import org.gradle.api.Project
9+
import org.gradle.kotlin.dsl.configure
10+
11+
class MavenPublishConventionPlugin : Plugin<Project> {
12+
override fun apply(target: Project) {
13+
target.pluginManager.withPlugin("com.android.library") {
14+
target.pluginManager.apply("com.vanniktech.maven.publish")
15+
16+
target.extensions.configure<MavenPublishBaseExtension> {
17+
configure(
18+
AndroidSingleVariantLibrary(
19+
javadocJar = JavadocJar.Empty(),
20+
sourcesJar = SourcesJar.Sources(),
21+
variant = "release",
22+
),
23+
)
24+
coordinates(
25+
groupId = target.group.toString(),
26+
artifactId = target.name,
27+
version = target.version.toString(),
28+
)
29+
publishToMavenCentral()
30+
signAllPublications()
31+
32+
pom {
33+
name.set("Snap-O ${target.name}")
34+
description.set("Android network inspection integration for Snap-O.")
35+
inceptionYear.set("2025")
36+
url.set("https://github.com/openai/snap-o")
37+
38+
licenses {
39+
license {
40+
name.set("The Apache License, Version 2.0")
41+
url.set("https://www.apache.org/licenses/LICENSE-2.0.txt")
42+
distribution.set("repo")
43+
}
44+
}
45+
developers {
46+
developer {
47+
id.set("openai")
48+
name.set("OpenAI")
49+
url.set("https://openai.com")
50+
}
51+
}
52+
scm {
53+
url.set("https://github.com/openai/snap-o")
54+
connection.set("scm:git:https://github.com/openai/snap-o.git")
55+
developerConnection.set("scm:git:ssh://git@github.com/openai/snap-o.git")
56+
}
57+
}
58+
}
59+
}
60+
}
61+
}

snapo-link-android/gradle/libs.versions.toml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ gradle = "9.0.0"
55
kotlin = "2.3.0"
66
coroutines = "1.10.2"
77
kotlinGradlePlugin = "2.2.20"
8+
mavenPublishGradlePlugin = "0.36.0"
89
serialization = "1.9.0"
910
coreKtx = "1.17.0"
1011
lifecycleRuntimeKtx = "2.10.0"
@@ -19,6 +20,7 @@ androidx-core-ktx = { group = "androidx.core", name = "core-ktx", version.ref =
1920
detekt-gradle-plugin = { module = "io.gitlab.arturbosch.detekt:detekt-gradle-plugin", version.ref = "detektGradlePlugin" }
2021
gradle = { module = "com.android.tools.build:gradle", version.ref = "gradle" }
2122
kotlin-gradle-plugin = { module = "org.jetbrains.kotlin:kotlin-gradle-plugin", version.ref = "kotlinGradlePlugin" }
23+
maven-publish-gradle-plugin = { module = "com.vanniktech:gradle-maven-publish-plugin", version.ref = "mavenPublishGradlePlugin" }
2224
kotlinx-coroutines-core = { group = "org.jetbrains.kotlinx", name = "kotlinx-coroutines-core", version.ref = "coroutines" }
2325
serialization-json = { group = "org.jetbrains.kotlinx", name = "kotlinx-serialization-json", version.ref = "serialization" }
2426
androidx-lifecycle-runtime-ktx = { group = "androidx.lifecycle", name = "lifecycle-runtime-ktx", version.ref = "lifecycleRuntimeKtx" }
-13.4 KB
Binary file not shown.
Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
1-
#Wed Sep 24 11:05:57 EDT 2025
21
distributionBase=GRADLE_USER_HOME
32
distributionPath=wrapper/dists
3+
distributionSha256Sum=a17ddd85a26b6a7f5ddb71ff8b05fc5104c0202c6e64782429790c933686c806
44
distributionUrl=https\://services.gradle.org/distributions/gradle-9.1.0-bin.zip
5+
networkTimeout=10000
6+
validateDistributionUrl=true
57
zipStoreBase=GRADLE_USER_HOME
68
zipStorePath=wrapper/dists

0 commit comments

Comments
 (0)