Skip to content

Commit 8e9a9c1

Browse files
authored
chore(publish): publishing to MavenCentral implemented (#341)
* base mavenPublishing setup * maven config added to each plugin * dependency cleanup * refactor * refactor * groupId updated to com.androidpluto
1 parent 7e72a23 commit 8e9a9c1

File tree

30 files changed

+1056
-111
lines changed

30 files changed

+1056
-111
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,3 +11,4 @@
1111
/scripts/publish/_newCreds.properties
1212
*.gpg
1313
/buildSrc/build
14+
mavenCredentials.properties

build.gradle.kts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,4 +52,5 @@ val prCheck by tasks.registering {
5252
}
5353

5454
apply (from = "$rootDir/scripts/project-dependancy-graph.gradle")
55-
apply (from = "$rootDir/maven-versions.gradle.kts")
55+
apply (from = "$rootDir/maven-versions.gradle.kts")
56+
apply(from = "$rootDir/publishTasks.gradle.kts")

gradle.properties

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,3 +14,23 @@
1414
android.useAndroidX=true
1515
kotlin.code.style=official
1616
org.gradle.jvmargs=-Xmx2048M -Dkotlin.daemon.jvm.options\="-Xmx2048M"
17+
18+
# Maven Central publish credentials
19+
mavenCentralUsername=XXXX
20+
mavenCentralPassword=XXXX
21+
signing.keyId=XXXX
22+
signing.password=XXXX
23+
signing.secretKeyRingFile=XXXX
24+
25+
# Maven Central publish pom details
26+
pom.inceptionYear=2024
27+
pom.url=https://androidpluto.com
28+
pom.license.name=The Apache Software License, Version 2.0
29+
pom.license.url=http://www.apache.org/licenses/LICENSE-2.0.txt
30+
pom.developer.id=srtvprateek
31+
pom.developer.name=Prateek Srivastava
32+
pom.developer.email=[email protected]
33+
pom.scm.connection=https://github.com/androidPluto/pluto
34+
pom.scm.developerConnection=https://github.com/srtvprateek
35+
pom.scm.url=https://github.com/androidPluto/pluto
36+

gradle/libs.versions.toml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ targetSdk = "32"
77
compileSdk = "34"
88
buildTools = "34.0.0"
99

10-
agp = "8.2.2"
10+
agp = "8.6.0"
1111
androidXCore = "1.6.0"
1212
androidXLifecycle = "2.8.7"
1313
compose = "1.7.7"
@@ -23,6 +23,7 @@ navigation = "2.8.6"
2323
okhttp = "4.12.0"
2424
retrofit = "2.9.0"
2525
room = "2.5.1"
26+
mavenPublish = "0.28.0"
2627

2728
[plugins]
2829

@@ -35,6 +36,7 @@ kotlin-parcelize = { id = "org.jetbrains.kotlin.plugin.parcelize", version.ref =
3536
kotlin-serialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlin" }
3637
ksp = { id = "com.google.devtools.ksp", version.ref = "ksp" }
3738
ktlint = { id = "org.jlleitschuh.gradle.ktlint", version.ref = "ktlint-plugin" }
39+
maven-publish = { id = "com.vanniktech.maven.publish", version.ref = "mavenPublish"}
3840

3941
[libraries]
4042

pluto-plugins/base/lib/build.gradle.kts

Lines changed: 42 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,16 @@
1+
import com.vanniktech.maven.publish.SonatypeHost
2+
13
plugins {
24
alias(libs.plugins.android.library)
35
alias(libs.plugins.kotlin.android)
6+
alias(libs.plugins.maven.publish)
47
}
58

69
val version = Versioning.loadVersioningData()
710
val verCode = version["code"] as Int
811
val verPublish = version["publish"] as String
912
val verGitSHA = version["gitSha"] as String
1013

11-
extra["PUBLISH_GROUP_ID"] = "com.plutolib"
12-
extra["PUBLISH_ARTIFACT_ID"] = "plugin"
13-
extra["PUBLISH_VERSION"] = verPublish
14-
1514
android {
1615
namespace = "com.pluto.plugin"
1716
resourcePrefix = "pluto___"
@@ -54,6 +53,45 @@ android {
5453
}
5554
}
5655

56+
extra["PUBLISH_GROUP_ID"] = "com.androidpluto"
57+
extra["PUBLISH_ARTIFACT_ID"] = "plugin"
58+
extra["PUBLISH_ARTIFACT_NAME"] = "Android Pluto Base Plugin Module"
59+
extra["PUBLISH_ARTIFACT_DESCRIPTION"] = "Open Sourced, on-device debugger for Android apps"
60+
61+
mavenPublishing {
62+
coordinates(
63+
groupId = extra["PUBLISH_GROUP_ID"] as String,
64+
artifactId = extra["PUBLISH_ARTIFACT_ID"] as String,
65+
version = verPublish
66+
)
67+
pom {
68+
name.set(extra["PUBLISH_ARTIFACT_NAME"] as String)
69+
description.set(extra["PUBLISH_ARTIFACT_DESCRIPTION"] as String)
70+
inceptionYear.set(project.findProperty("pom.inceptionYear") as? String)
71+
url.set(project.findProperty("pom.url") as? String)
72+
licenses {
73+
license {
74+
name.set(project.findProperty("pom.license.name") as? String)
75+
url.set(project.findProperty("pom.license.url") as? String)
76+
}
77+
}
78+
developers {
79+
developer {
80+
id.set(project.findProperty("pom.developer.id") as? String)
81+
name.set(project.findProperty("pom.developer.name") as? String)
82+
email.set(project.findProperty("pom.developer.email") as? String)
83+
}
84+
}
85+
scm {
86+
connection.set(project.findProperty("pom.scm.connection") as? String)
87+
developerConnection.set(project.findProperty("pom.scm.developerConnection") as? String)
88+
url.set(project.findProperty("pom.scm.url") as? String)
89+
}
90+
}
91+
publishToMavenCentral(SonatypeHost.CENTRAL_PORTAL)
92+
signAllPublications()
93+
}
94+
5795
dependencies {
5896
implementation(libs.androidx.core)
5997
implementation(libs.androidx.appcompat)

pluto-plugins/bundle/lib-no-op/build.gradle.kts

Lines changed: 42 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,16 @@
1+
import com.vanniktech.maven.publish.SonatypeHost
2+
13
plugins {
24
alias(libs.plugins.android.library)
35
alias(libs.plugins.kotlin.android)
6+
alias(libs.plugins.maven.publish)
47
}
58

69
val version = Versioning.loadVersioningData()
710
val verCode = version["code"] as Int
811
val verPublish = version["publish"] as String
912
val verGitSHA = version["gitSha"] as String
1013

11-
extra["PUBLISH_GROUP_ID"] = "com.plutolib.plugins"
12-
extra["PUBLISH_ARTIFACT_ID"] = "bundle-core-no-op"
13-
extra["PUBLISH_VERSION"] = verPublish
14-
1514
android {
1615
namespace = "com.pluto.plugins.bundle.core"
1716
compileSdk = libs.versions.compileSdk.get().toInt()
@@ -49,6 +48,45 @@ android {
4948
}
5049
}
5150

51+
extra["PUBLISH_GROUP_ID"] = "com.androidpluto.plugins"
52+
extra["PUBLISH_ARTIFACT_ID"] = "bundle-core-no-op"
53+
extra["PUBLISH_ARTIFACT_NAME"] = "Android Pluto Plugin Bundle"
54+
extra["PUBLISH_ARTIFACT_DESCRIPTION"] = "Bundle module for Android Pluto plugins"
55+
56+
mavenPublishing {
57+
coordinates(
58+
groupId = extra["PUBLISH_GROUP_ID"] as String,
59+
artifactId = extra["PUBLISH_ARTIFACT_ID"] as String,
60+
version = verPublish
61+
)
62+
pom {
63+
name.set(extra["PUBLISH_ARTIFACT_NAME"] as String)
64+
description.set(extra["PUBLISH_ARTIFACT_DESCRIPTION"] as String)
65+
inceptionYear.set(project.findProperty("pom.inceptionYear") as? String)
66+
url.set(project.findProperty("pom.url") as? String)
67+
licenses {
68+
license {
69+
name.set(project.findProperty("pom.license.name") as? String)
70+
url.set(project.findProperty("pom.license.url") as? String)
71+
}
72+
}
73+
developers {
74+
developer {
75+
id.set(project.findProperty("pom.developer.id") as? String)
76+
name.set(project.findProperty("pom.developer.name") as? String)
77+
email.set(project.findProperty("pom.developer.email") as? String)
78+
}
79+
}
80+
scm {
81+
connection.set(project.findProperty("pom.scm.connection") as? String)
82+
developerConnection.set(project.findProperty("pom.scm.developerConnection") as? String)
83+
url.set(project.findProperty("pom.scm.url") as? String)
84+
}
85+
}
86+
publishToMavenCentral(SonatypeHost.CENTRAL_PORTAL)
87+
signAllPublications()
88+
}
89+
5290
dependencies {
5391
api(project(":pluto-plugins:plugins:exceptions:lib-no-op"))
5492
api(project(":pluto-plugins:plugins:network:core:lib-no-op"))

pluto-plugins/bundle/lib/build.gradle.kts

Lines changed: 42 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,16 @@
1+
import com.vanniktech.maven.publish.SonatypeHost
2+
13
plugins {
24
alias(libs.plugins.android.library)
35
alias(libs.plugins.kotlin.android)
6+
alias(libs.plugins.maven.publish)
47
}
58

69
val version = Versioning.loadVersioningData()
710
val verCode = version["code"] as Int
811
val verPublish = version["publish"] as String
912
val verGitSHA = version["gitSha"] as String
1013

11-
extra["PUBLISH_GROUP_ID"] = "com.plutolib.plugins"
12-
extra["PUBLISH_ARTIFACT_ID"] = "bundle-core"
13-
extra["PUBLISH_VERSION"] = verPublish
14-
1514
android {
1615
namespace = "com.pluto.plugins.bundle.core"
1716
compileSdk = libs.versions.compileSdk.get().toInt()
@@ -49,6 +48,45 @@ android {
4948
}
5049
}
5150

51+
extra["PUBLISH_GROUP_ID"] = "com.androidpluto.plugins"
52+
extra["PUBLISH_ARTIFACT_ID"] = "bundle-core"
53+
extra["PUBLISH_ARTIFACT_NAME"] = "Android Pluto Plugin Bundle"
54+
extra["PUBLISH_ARTIFACT_DESCRIPTION"] = "Bundle module for Android Pluto plugins"
55+
56+
mavenPublishing {
57+
coordinates(
58+
groupId = extra["PUBLISH_GROUP_ID"] as String,
59+
artifactId = extra["PUBLISH_ARTIFACT_ID"] as String,
60+
version = verPublish
61+
)
62+
pom {
63+
name.set(extra["PUBLISH_ARTIFACT_NAME"] as String)
64+
description.set(extra["PUBLISH_ARTIFACT_DESCRIPTION"] as String)
65+
inceptionYear.set(project.findProperty("pom.inceptionYear") as? String)
66+
url.set(project.findProperty("pom.url") as? String)
67+
licenses {
68+
license {
69+
name.set(project.findProperty("pom.license.name") as? String)
70+
url.set(project.findProperty("pom.license.url") as? String)
71+
}
72+
}
73+
developers {
74+
developer {
75+
id.set(project.findProperty("pom.developer.id") as? String)
76+
name.set(project.findProperty("pom.developer.name") as? String)
77+
email.set(project.findProperty("pom.developer.email") as? String)
78+
}
79+
}
80+
scm {
81+
connection.set(project.findProperty("pom.scm.connection") as? String)
82+
developerConnection.set(project.findProperty("pom.scm.developerConnection") as? String)
83+
url.set(project.findProperty("pom.scm.url") as? String)
84+
}
85+
}
86+
publishToMavenCentral(SonatypeHost.CENTRAL_PORTAL)
87+
signAllPublications()
88+
}
89+
5290
dependencies {
5391
api(project(":pluto-plugins:plugins:exceptions:lib"))
5492
api(project(":pluto-plugins:plugins:network:core:lib"))

pluto-plugins/plugins/datastore/lib-no-op/build.gradle.kts

Lines changed: 42 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,16 @@
1+
import com.vanniktech.maven.publish.SonatypeHost
2+
13
plugins {
24
alias(libs.plugins.android.library)
35
alias(libs.plugins.kotlin.android)
6+
alias(libs.plugins.maven.publish)
47
}
58

69
val version = Versioning.loadVersioningData()
710
val verCode = version["code"] as Int
811
val verPublish = version["publish"] as String
912
val verGitSHA = version["gitSha"] as String
1013

11-
extra["PUBLISH_GROUP_ID"] = "com.plutolib.plugins"
12-
extra["PUBLISH_ARTIFACT_ID"] = "datastore-pref-no-op"
13-
extra["PUBLISH_VERSION"] = verPublish
14-
1514
android {
1615
namespace = "com.pluto.plugins.datastore.pref"
1716

@@ -49,7 +48,45 @@ android {
4948
}
5049
}
5150

51+
extra["PUBLISH_GROUP_ID"] = "com.androidpluto.plugins"
52+
extra["PUBLISH_ARTIFACT_ID"] = "datastore-pref-no-op"
53+
extra["PUBLISH_ARTIFACT_NAME"] = "Android Pluto Datastore Preferences Plugin"
54+
extra["PUBLISH_ARTIFACT_DESCRIPTION"] = "Plugin to manage Datastore preferences in Android Pluto"
55+
56+
mavenPublishing {
57+
coordinates(
58+
groupId = extra["PUBLISH_GROUP_ID"] as String,
59+
artifactId = extra["PUBLISH_ARTIFACT_ID"] as String,
60+
version = verPublish
61+
)
62+
pom {
63+
name.set(extra["PUBLISH_ARTIFACT_NAME"] as String)
64+
description.set(extra["PUBLISH_ARTIFACT_DESCRIPTION"] as String)
65+
inceptionYear.set(project.findProperty("pom.inceptionYear") as? String)
66+
url.set(project.findProperty("pom.url") as? String)
67+
licenses {
68+
license {
69+
name.set(project.findProperty("pom.license.name") as? String)
70+
url.set(project.findProperty("pom.license.url") as? String)
71+
}
72+
}
73+
developers {
74+
developer {
75+
id.set(project.findProperty("pom.developer.id") as? String)
76+
name.set(project.findProperty("pom.developer.name") as? String)
77+
email.set(project.findProperty("pom.developer.email") as? String)
78+
}
79+
}
80+
scm {
81+
connection.set(project.findProperty("pom.scm.connection") as? String)
82+
developerConnection.set(project.findProperty("pom.scm.developerConnection") as? String)
83+
url.set(project.findProperty("pom.scm.url") as? String)
84+
}
85+
}
86+
publishToMavenCentral(SonatypeHost.CENTRAL_PORTAL)
87+
signAllPublications()
88+
}
89+
5290
dependencies {
53-
implementation(libs.androidx.core)
5491
implementation(libs.datastore.preferences)
5592
}

pluto-plugins/plugins/datastore/lib/build.gradle.kts

Lines changed: 42 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,16 @@
1+
import com.vanniktech.maven.publish.SonatypeHost
2+
13
plugins {
24
alias(libs.plugins.android.library)
35
alias(libs.plugins.kotlin.android)
6+
alias(libs.plugins.maven.publish)
47
}
58

69
val version = Versioning.loadVersioningData()
710
val verCode = version["code"] as Int
811
val verPublish = version["publish"] as String
912
val verGitSHA = version["gitSha"] as String
1013

11-
extra["PUBLISH_GROUP_ID"] = "com.plutolib.plugins"
12-
extra["PUBLISH_ARTIFACT_ID"] = "datastore-pref"
13-
extra["PUBLISH_VERSION"] = verPublish
14-
1514
android {
1615
namespace = "com.pluto.plugins.datastore.pref"
1716
resourcePrefix = "pluto_dts___"
@@ -60,6 +59,45 @@ android {
6059
}
6160
}
6261

62+
extra["PUBLISH_GROUP_ID"] = "com.androidpluto.plugins"
63+
extra["PUBLISH_ARTIFACT_ID"] = "datastore-pref"
64+
extra["PUBLISH_ARTIFACT_NAME"] = "Android Pluto Datastore Preferences Plugin"
65+
extra["PUBLISH_ARTIFACT_DESCRIPTION"] = "Plugin to manage Datastore preferences in Android Pluto"
66+
67+
mavenPublishing {
68+
coordinates(
69+
groupId = extra["PUBLISH_GROUP_ID"] as String,
70+
artifactId = extra["PUBLISH_ARTIFACT_ID"] as String,
71+
version = verPublish
72+
)
73+
pom {
74+
name.set(extra["PUBLISH_ARTIFACT_NAME"] as String)
75+
description.set(extra["PUBLISH_ARTIFACT_DESCRIPTION"] as String)
76+
inceptionYear.set(project.findProperty("pom.inceptionYear") as? String)
77+
url.set(project.findProperty("pom.url") as? String)
78+
licenses {
79+
license {
80+
name.set(project.findProperty("pom.license.name") as? String)
81+
url.set(project.findProperty("pom.license.url") as? String)
82+
}
83+
}
84+
developers {
85+
developer {
86+
id.set(project.findProperty("pom.developer.id") as? String)
87+
name.set(project.findProperty("pom.developer.name") as? String)
88+
email.set(project.findProperty("pom.developer.email") as? String)
89+
}
90+
}
91+
scm {
92+
connection.set(project.findProperty("pom.scm.connection") as? String)
93+
developerConnection.set(project.findProperty("pom.scm.developerConnection") as? String)
94+
url.set(project.findProperty("pom.scm.url") as? String)
95+
}
96+
}
97+
publishToMavenCentral(SonatypeHost.CENTRAL_PORTAL)
98+
signAllPublications()
99+
}
100+
63101
dependencies {
64102
implementation(project(":pluto-plugins:base:lib"))
65103

0 commit comments

Comments
 (0)