This document explains how to publish MapConductor modules to various Maven repositories.
The following modules are configured for publishing:
mapconductor-bom- Versioning dependency modulescore- Core abstractions and shared functionalityfor-arcgis- ArcGIS Maps implementationfor-googlemaps- Google Maps implementationfor-here- HERE Maps implementationfor-mapbox- Mapbox implementationicons- Reusable marker icon components
For local testing and development:
# Publish all modules to local repository
./gradlew publishAllLocal
# Publish individual module
./gradlew :android-sdk-core:publishToMavenLocalPublished artifacts will be available in ~/.m2/repository/com/mapconductor/
For publishing to GitHub Packages repository:
Add to local.properties or set environment variables:
# local.properties
gpr.user=your-github-username
gpr.key=your-github-personal-access-tokenOr set environment variables:
export GITHUB_ACTOR=your-github-username
export GITHUB_TOKEN=your-github-personal-access-token# Publish all modules to GitHub Packages
./gradlew publishAllToGitHub
# Publish individual module
./gradlew :android-sdk-core:publishReleasePublicationToGitHubPackagesRepositoryFor publishing to Maven Central via the new Central Portal:
Add to local.properties or set environment variables:
# local.properties
signing.keyId=your-gpg-key-id
signing.password=your-gpg-key-password
signing.secretKeyRingFile=/path/to/secring.gpg
ossrh.username=your-central-portal-username
ossrh.password=your-central-portal-passwordOr set environment variables:
export OSSRH_USERNAME=your-central-portal-username
export OSSRH_PASSWORD=your-central-portal-password# Step 1: Stage all modules locally (prepare for Central Portal)
./gradlew publishAllToMavenCentral
# Step 2: Submit to Central Portal
./gradlew publishAllPublicationsToCentralPortal
# For individual module submissions
./gradlew :android-sdk-core:publishReleasePublicationToCentralPortalCheck your submission at https://central.sonatype.com/
- Login with your Central Portal credentials
- View deployments to see status
- Artifacts will appear on Maven Central after successful validation
Update version in gradle.properties:
libraryVersion=1.0.1Note: versionName is no longer used for library publishing. Only libraryVersion is needed.
Configure in gradle.properties:
libraryGroupId=com.mapconductor
libraryUrl=https://github.com/mapconductor/android-sdk-doc
developerId=mapconductor
developerName=MapConductor Team
developerEmail=dev@mapconductor.com
scmUrl=https://github.com/mapconductor/android-sdk-doc.gitEach module has its own artifact ID and description in its build.gradle.kts:
ext {
libraryArtifactId = "core"
libraryName = "MapConductor Core"
libraryDescription = "Core abstractions and shared functionality for MapConductor unified mapping library"
}Each module publishes the following artifacts:
{artifact-id}-{version}.aar- Main library{artifact-id}-{version}-sources.jar- Source code{artifact-id}-{version}-javadoc.jar- Documentation{artifact-id}-{version}.pom- Maven metadata
repositories {
maven {
name = "GitHubPackages"
url = uri("https://maven.pkg.github.com/mapconductor/android-sdk")
credentials {
username = project.findProperty("gpr.user") as String? ?: System.getenv("GITHUB_ACTOR")
password = project.findProperty("gpr.key") as String? ?: System.getenv("GITHUB_TOKEN")
}
}
}
dependencies {
implementation("com.mapconductor:mapconductor-bom:1.0.0")
implementation("com.mapconductor:core")
implementation("com.mapconductor:for-googlemaps")
// Add other modules as needed
}dependencies {
implementation("com.mapconductor:mapconductor-bom:1.0.0")
implementation("com.mapconductor:core")
implementation("com.mapconductor:for-googlemaps")
// Add other modules as needed
}- Authentication Failed: Verify Central Portal credentials in
local.propertiesor environment variables - Signing Failed: Ensure GPG key is properly configured for Maven Central
- Build Failed: Run
./gradlew allLintChecksto fix code style issues first - Version Shows as "unspecified": Check that
libraryVersionis properly set ingradle.properties - Central Portal Submission Failed: Use
./gradlew publishAllPublicationsToCentralPortal --infofor detailed logs
Check generated artifacts before publishing:
# Build all modules
./gradlew build
# Check artifacts in build/outputs/aar/
ls android-sdk-core/build/outputs/aar/If you encounter issues, try a clean build:
./gradlew clean
./gradlew build
./gradlew publishAllLocalBefore publishing a release:
- Update
libraryVersioningradle.properties - Run
./gradlew allLintChecksand fix any issues - Run
./gradlew buildand ensure all tests pass - Test locally with
./gradlew publishAllLocal - Update
CHANGELOG.mdwith release notes - Create git tag:
git tag v1.0.0 - Stage artifacts:
./gradlew publishAllToMavenCentral - Submit to Central Portal:
./gradlew publishAllPublicationsToCentralPortal - Verify submission at https://central.sonatype.com/
- Push tag:
git push origin v1.0.0