Skip to content

Commit b9b7e0a

Browse files
DavDoAndrii-Horishnii-Glia
authored andcommitted
Enhance Maven publishing configuration and update POM properties
1 parent e8139cc commit b9b7e0a

6 files changed

Lines changed: 77 additions & 75 deletions

File tree

build.gradle

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,9 @@ buildscript {
99
}
1010

1111
plugins {
12-
alias libs.plugins.maven.publish
1312
alias libs.plugins.dokka
13+
alias libs.plugins.dokkaJavadoc
14+
alias libs.plugins.maven.publish
1415
alias libs.plugins.kt.lint
1516
alias libs.plugins.kotlin.android apply false
1617
alias libs.plugins.paparazzi apply false
@@ -20,15 +21,6 @@ apply from: "${rootDir}/scripts/version-updater.gradle"
2021

2122
allprojects {
2223

23-
project.ext {
24-
PUBLISH_GROUP_ID = 'com.glia'
25-
PUBLISH_VERSION = widgetsVersionName
26-
PUBLISH_ARTIFACT_ID = 'android-widgets'
27-
PUBLISH_MODULE_DESCRIPTION = 'Glia Android Widgets SDK'
28-
PUBLISH_ORGANISATION_NAME = 'Glia'
29-
PUBLISH_ORGANISATION_URL = 'https://www.glia.com/'
30-
}
31-
3224
repositories {
3325
google()
3426
mavenCentral()
@@ -109,5 +101,3 @@ dokka {
109101
dokkaPlugin(libs.java.dokka)
110102
}
111103
}
112-
113-
apply from: "${rootDir}/scripts/publish-module.gradle"

gradle.properties

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,3 +34,19 @@ mavenCentralPassword=
3434
signing.keyId=
3535
signing.password=
3636
signing.secretKeyRingFile=
37+
38+
# POM configuration for Maven Central
39+
POM_NAME=android-widgets
40+
POM_DESCRIPTION=Glia Android Widgets SDK
41+
POM_INCEPTION_YEAR=2021
42+
POM_URL=https://www.glia.com/
43+
44+
POM_LICENSE_URL=https://raw.githubusercontent.com/salemove/android-sdk-widgets/master/LICENSE.txt
45+
46+
POM_SCM_URL=https://github.com/salemove/android-sdk-widgets.git
47+
48+
POM_DEVELOPER_NAME=Glia Technologies
49+
POM_DEVELOPER_URL=https://www.glia.com/
50+
51+
POM_ORGANIZATION_NAME=Glia Technologies
52+
POM_ORGANIZATION_URL=https://www.glia.com/

gradle/libs.versions.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,7 @@ debug-leakcanary = { module = "com.squareup.leakcanary:leakcanary-android", vers
8989

9090
[plugins]
9191
dokka = { id = "org.jetbrains.dokka", version.ref = "dokkaVersion" }
92+
dokkaJavadoc = { id = "org.jetbrains.dokka-javadoc", version.ref = "dokkaVersion" }
9293
kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlinVersion" }
9394
kt-lint = { id = "org.jlleitschuh.gradle.ktlint", version.ref = "ktlintVersion" }
9495
paparazzi = { id = "app.cash.paparazzi", version.ref = "paparazziVersion" }
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#Tue Jun 04 18:12:06 EEST 2024
22
distributionBase=GRADLE_USER_HOME
33
distributionPath=wrapper/dists
4-
distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.3-bin.zip
4+
distributionUrl=https\://services.gradle.org/distributions/gradle-8.13-bin.zip
55
zipStoreBase=GRADLE_USER_HOME
66
zipStorePath=wrapper/dists

scripts/publish-module.gradle

Lines changed: 0 additions & 60 deletions
This file was deleted.

widgetssdk/build.gradle

Lines changed: 57 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
1+
import com.vanniktech.maven.publish.AndroidSingleVariantLibrary
2+
13
apply plugin: 'com.android.library'
24
apply plugin: 'org.jetbrains.kotlin.android'
35
apply plugin: 'kotlin-parcelize'
6+
apply plugin: 'com.vanniktech.maven.publish'
7+
apply plugin: 'org.jetbrains.dokka-javadoc'
48

59
//Detailed information about advantages of Java toolchain https://developer.android.com/build/jdks#toolchain
610
java {
@@ -85,6 +89,40 @@ android {
8589
}
8690
}
8791

92+
group = 'com.glia'
93+
94+
mavenPublishing {
95+
def isSnapshot = findProperty("snapshot")?.toString() == "yes"
96+
//Plugin automatically publishes snapshot to the Maven Central when the version name ends with `-SNAPSHOT`
97+
//To publish snapshot release simply call the publishing command with gradle property `-Psnapshot=yes`
98+
//for example `./gradlew androidSdk:publishMavenPublicationToMavenLocal -Psnapshot=yes`
99+
100+
version = isSnapshot ? widgetsVersionName + "-SNAPSHOT" : widgetsVersionName
101+
coordinates(group, 'android-widgets', version)
102+
configure(new AndroidSingleVariantLibrary('release', true, false/* enable javadoc generation */))
103+
104+
pom {
105+
excludeOptionalDependencies(it)
106+
}
107+
}
108+
109+
//Excludes the Firebase Messaging from the .aar dependencies to avoid requiring integrators to include them in their applications.
110+
def excludeOptionalDependencies(mavenPom) {
111+
mavenPom.withXml {
112+
final pomNode = asNode()
113+
pomNode.dependencyManagement.dependencies.'*'.findAll() {
114+
it.artifactId.text() == 'firebase-bom'
115+
}.each() {
116+
it.parent().remove(it)
117+
}
118+
pomNode.dependencies.'*'.findAll() {
119+
it.artifactId.text() == 'firebase-messaging'
120+
}.each() {
121+
it.parent().remove(it)
122+
}
123+
}
124+
}
125+
88126
tasks.register('publishSnapshotPublicationToMavenLocal', GradleBuild) {
89127
description = 'Publishes the Snapshot publication to Maven Local with -SNAPSHOT suffix'
90128
group = 'publishing'
@@ -112,6 +150,25 @@ tasks.register("publishCoreSdkToLocalMaven") {
112150
}
113151
}
114152

153+
// For generating Javadoc jar using Dokka
154+
tasks.register('dokkaJavadocJar', Jar.class) {
155+
dependsOn(dokkaGeneratePublicationJavadoc)
156+
from(dokkaGeneratePublicationJavadoc)
157+
archiveClassifier.set("javadoc")
158+
}
159+
160+
// CRITICAL: Ensure the Dokka JAR is included in the published artifacts.
161+
afterEvaluate {
162+
publishing {
163+
publications {
164+
maven(MavenPublication) {
165+
// CRITICAL: Add the generated Javadoc jar to the published artifacts.
166+
artifact dokkaJavadocJar
167+
}
168+
}
169+
}
170+
}
171+
115172
apply from: "${rootProject.projectDir}/scripts/direct-core.gradle"
116173

117174
dependencies {
@@ -176,5 +233,3 @@ configurations.configureEach {
176233
// Always check remote repo for changing modules (SNAPSHOTs)
177234
resolutionStrategy.cacheChangingModulesFor 0, 'seconds'
178235
}
179-
180-
apply from: "${rootProject.projectDir}/scripts/publish-module.gradle"

0 commit comments

Comments
 (0)