Skip to content

Commit

Permalink
feat: Added separating publication to local and remote repositories. …
Browse files Browse the repository at this point in the history
…Changed getting dependencies from sdk and sending to maven with build package
  • Loading branch information
DanielGreenEngineer committed Oct 1, 2024
1 parent 1ce5465 commit 42c2dd1
Show file tree
Hide file tree
Showing 2 changed files with 108 additions and 66 deletions.
22 changes: 22 additions & 0 deletions personalization-sdk/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,28 @@ android {
namespace 'com.personalization'
}

dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])

implementation 'androidx.multidex:multidex:2.0.1'
implementation 'androidx.recyclerview:recyclerview:1.3.2'
implementation 'com.google.android.material:material:1.12.0'
implementation 'org.jetbrains:annotations:24.1.0'
implementation 'androidx.core:core-ktx:1.13.1'
implementation 'androidx.work:work-runtime-ktx:2.9.1'
implementation 'com.google.code.gson:gson:2.11.0'
implementation 'org.jetbrains.kotlin:kotlin-stdlib'
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.6.4'

implementation platform('com.google.firebase:firebase-bom:32.7.0')
implementation 'com.google.firebase:firebase-messaging:23.4.1'
implementation 'com.github.bumptech.glide:glide:4.16.0'
implementation 'androidx.media3:media3-exoplayer:1.4.1'
implementation 'androidx.media3:media3-ui:1.4.1'
implementation 'com.google.dagger:dagger:2.51.1'
kapt 'com.google.dagger:dagger-compiler:2.48'
}

configurations {
rees46Debug
rees46Release
Expand Down
152 changes: 86 additions & 66 deletions publish.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -24,63 +24,99 @@ def urls = [rees46: "https://github.com/rees46/android-sdk", personaclick: "http

def publicationNames = []

def isPublishingInMavenLocal = false

publishing {
publications {
android.libraryVariants.all { variant ->
if (variant.buildType.name == "debug") return // Prevents publishing debug library
println "Processing variant: ${variant.name}"

if (!isPublishingInMavenLocal) {
if (variant.buildType.name == "debug") {
println "Skipping debug variant: ${variant.name}"
return // Prevents publishing debug library
}

if (variant.flavorName != variantName) return
if (variant.flavorName != variantName) {
println "Skipping variant due to flavor mismatch: ${variant.flavorName} != ${variantName}"
return
}
}

def flavored = !variant.flavorName.isEmpty()
println "Is flavored variant: ${flavored}"

def variantArtifactId = flavored ? variant.flavorName.replace('_', '-') + "-sdk" : project.name
println "Variant Artifact ID before applying flag: ${variantArtifactId}"

def modifiedGroupId = isPublishingInMavenLocal ? "com.local-${variant.flavorName}" : "com.${variant.flavorName}"
def modifiedArtifactId = isPublishingInMavenLocal ? "local-${variantArtifactId}" : variantArtifactId

def javaDocDestDir = file("${layout.buildDirectory.get().asFile}/docs/javadoc ${flavored ? variantArtifactId : ""}")
println "Final Group ID: ${modifiedGroupId}"
println "Final Artifact ID: ${modifiedArtifactId}"

def javaDocDestDir = file("${layout.buildDirectory.get().asFile}/docs/javadoc ${flavored ? modifiedArtifactId : ""}")
println "Javadoc Destination Directory: ${javaDocDestDir}"

def sourceDirs = variant.sourceSets.collect {
it.javaDirectories
}
def javadoc = task("${variant.name}Javadoc", type: Javadoc) {
description "Generates Javadoc for ${variant.name}."
source = variant.javaCompileProvider.get().source
destinationDir = javaDocDestDir
classpath += files("${android.sdkDirectory}/platforms/${android.compileSdkVersion}/android.jar")
configurations.implementation.setCanBeResolved(true)
classpath += files(configurations.implementation)
options.links("http://docs.oracle.com/javase/7/docs/api/");
options.links("http://d.android.com/reference/");
exclude '**/BuildConfig.java'
exclude '**/R.java'
failOnError false
}
def javadocJar = task("${variant.name}JavadocJar", type: Jar, dependsOn: javadoc) {
description "Puts Javadoc for ${variant.name} in a jar."
archiveClassifier.set('javadoc-' + variant.name)
from javadoc.destinationDir
println "Source Directories: ${sourceDirs}"

def javadoc
def javadocJar

if (!isPublishingInMavenLocal || variant.buildType.name == "release") {
javadoc = task("${variant.name}Javadoc", type: Javadoc) {
description "Generates Javadoc for ${variant.name}."
source = variant.javaCompileProvider.get().source
destinationDir = javaDocDestDir
classpath += files("${android.sdkDirectory}/platforms/${android.compileSdkVersion}/android.jar")
configurations.implementation.setCanBeResolved(true)
classpath += files(configurations.implementation)
options.links("http://docs.oracle.com/javase/7/docs/api/");
options.links("http://d.android.com/reference/");
exclude '**/BuildConfig.java'
exclude '**/R.java'
failOnError false
}
println "Created Javadoc task for variant: ${variant.name}"

javadocJar = task("${variant.name}JavadocJar", type: Jar, dependsOn: javadoc) {
description "Puts Javadoc for ${variant.name} in a jar."
archiveClassifier.set('javadoc-' + variant.name)
from javadoc.destinationDir
}
println "Created JavadocJar task for variant: ${variant.name}"
}

def sourcesJar = task("${variant.name}SourcesJar", type: Jar) {
description "Puts sources for ${variant.name} in a jar."
archiveClassifier.set('sources-' + variant.name)
from sourceDirs
}
println "Created SourcesJar task for variant: ${variant.name}"

def publicationName = "${variant.name.capitalize()}Library"
publicationNames.add(publicationName)
println "Adding publication: ${publicationName}"

"$publicationName"(MavenPublication) {
artifactId variantArtifactId
groupId "com.${variant.flavorName}"
artifactId modifiedArtifactId
groupId modifiedGroupId
version version

artifact variant.packageLibraryProvider.get()
artifact sourcesJar
artifact javadocJar
if (javadocJar != null) {
artifact javadocJar
}

pom {
packaging 'aar'
withXml {
def root = asNode()
root.appendNode("name", variantArtifactId)
root.appendNode("name", modifiedArtifactId)
root.appendNode("description", "${variant.flavorName.toUpperCase()} Android SDK")
root.appendNode("url", url)
root.children().last() + pomConfig
Expand Down Expand Up @@ -112,60 +148,44 @@ publishing {
}
}
}
println "implementation '${groupId}:${artifactId}:${version}'"
}
}

repositories {
mavenLocal()

maven {
name = "GitHubPackages"
if (isPublishingInMavenLocal) {
mavenLocal()
println "Publishing to local maven repository (mavenLocal) due to flag isPublishingInMavenLocal=true"
} else {
println "Publishing to local maven repository"
}

credentials {
username ossrhUsername
password ossrhPassword
}
maven {
name = "GitHubPackages"
credentials {
username ossrhUsername
password ossrhPassword
}
url = uri(publishUrl)
println "Configured GitHub Packages repository with URL: ${publishUrl}"
}

url = uri(publishUrl)
}
maven {
name = "sonatype"
maven {
name = "sonatype"

def releasesRepoUrl = "https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/"
def snapshotsRepoUrl = "https://s01.oss.sonatype.org/content/repositories/snapshots/"
def releasesRepoUrl = "https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/"
def snapshotsRepoUrl = "https://s01.oss.sonatype.org/content/repositories/snapshots/"

credentials {
username sonataUsername
password sonataPassword
}
credentials {
username sonataUsername
password sonataPassword
}

url = version.endsWith('SNAPSHOT') ? snapshotsRepoUrl : releasesRepoUrl
}
url = version.endsWith('SNAPSHOT') ? snapshotsRepoUrl : releasesRepoUrl
println "Configured Sonatype repository with URL: ${url}"
}
}
}

dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])

implementation platform('com.google.firebase:firebase-bom:32.7.0')
implementation 'com.google.firebase:firebase-messaging:23.4.1'
implementation 'androidx.multidex:multidex:2.0.1'
implementation 'androidx.recyclerview:recyclerview:1.3.2'
implementation 'com.google.android.material:material:1.12.0'
implementation 'org.jetbrains:annotations:24.1.0'
implementation 'com.github.bumptech.glide:glide:4.16.0'
implementation 'androidx.media3:media3-exoplayer:1.2.1'
implementation 'androidx.media3:media3-ui:1.2.1'
implementation 'androidx.core:core-ktx:1.13.1'
implementation 'androidx.work:work-runtime-ktx:2.9.0'
implementation 'com.google.code.gson:gson:2.11.0'
implementation 'com.google.dagger:dagger:2.51.1'
kapt 'com.google.dagger:dagger-compiler:2.48'
implementation 'org.jetbrains.kotlin:kotlin-stdlib'
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.6.4'
}

def sonatypeIds = [rees46: sonatype_rees46, personaclick: sonatype_personaclick]

afterEvaluate {
Expand Down

0 comments on commit 42c2dd1

Please sign in to comment.