Skip to content

Commit

Permalink
feat: Publish library to Maven Central
Browse files Browse the repository at this point in the history
  • Loading branch information
XayahSuSuSu committed Feb 26, 2022
1 parent 1edabe4 commit d739d99
Show file tree
Hide file tree
Showing 3 changed files with 125 additions and 2 deletions.
22 changes: 21 additions & 1 deletion MaterialYouFileExplorer/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -60,4 +60,24 @@ dependencies {

// PermissionX
implementation 'com.guolindev.permissionx:permissionx:1.6.1'
}
}

ext {
PUBLISH_GROUP_ID = "io.github.xayahsususu"
PUBLISH_ARTIFACT_ID = 'materialyoufileexplorer'
PUBLISH_DESCRIPTION = 'A file explorer with the style of Material You.'
PUBLISH_GITHUB_URL = 'https://github.com/XayahSuSuSu/Android-MaterialYouFileExplorer'
PUBLISH_VERSION = '1.0.0'
PUBLISH_LICENSE_NAME = 'GPL-3.0'
PUBLISH_LICENSE_URL = 'https://choosealicense.com/licenses/gpl-3.0/'
PUBLISH_DE_URL = 'https://choosealicense.com/licenses/gpl-3.0/'
PUBLISH_DEVELOPER_ID = 'Xayah'
PUBLISH_DEVELOPER_NAME = 'Xayah'
PUBLISH_DEVELOPER_EMAIL = '[email protected]'
PUBLISH_CONNECTION = 'scm:git:github.com/XayahSuSuSu/Android-MaterialYouFileExplorer.git'
PUBLISH_CONNECTION_DEVELOPER = 'scm:git:ssh://github.com/XayahSuSuSu/Android-MaterialYouFileExplorer.git'
PUBLISH_CONNECTION_URL = 'https://github.com/XayahSuSuSu/Android-MaterialYouFileExplorer/tree/main'
PUBLISH_MAVEN_NAME = "MaterialYouFileExplorer"

}
apply from: "${rootProject.projectDir}/publish-mavencentral.gradle"
3 changes: 2 additions & 1 deletion app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -46,5 +46,6 @@ dependencies {
androidTestImplementation 'androidx.test.ext:junit:1.1.3'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'

implementation project(path: ':MaterialYouFileExplorer')
// implementation project(path: ':MaterialYouFileExplorer')
implementation 'io.github.xayahsususu:materialyoufileexplorer:1.0.0'
}
102 changes: 102 additions & 0 deletions publish-mavencentral.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,102 @@
apply plugin: 'maven-publish'
apply plugin: 'signing'

task androidSourcesJar(type: Jar) {
classifier = 'sources'
from android.sourceSets.main.java.source
}

ext["signing.keyId"] = ''
ext["signing.password"] = ''
ext["signing.secretKeyRingFile"] = ''
ext["ossrhUsername"] = ''
ext["ossrhPassword"] = ''

File secretPropsFile = project.rootProject.file('local.properties')
if (secretPropsFile.exists()) {
println "Found secret props file, loading props"
Properties p = new Properties()
p.load(new FileInputStream(secretPropsFile))
p.each { name, value ->
ext[name] = value
}
} else {
println "No props file, loading env vars"
}
publishing {
publications {
release(MavenPublication) {
// The coordinates of the library, being set from variables that
// we'll set up in a moment
groupId PUBLISH_GROUP_ID
artifactId PUBLISH_ARTIFACT_ID
version PUBLISH_VERSION

// Two artifacts, the `aar` and the sources
artifact("$buildDir/outputs/aar/${project.getName()}-release.aar")
artifact androidSourcesJar

// Self-explanatory metadata for the most part
pom {
name = PUBLISH_ARTIFACT_ID
description = PUBLISH_DESCRIPTION
// If your project has a dedicated site, use its URL here
url = PUBLISH_GITHUB_URL
licenses {
license {
name = PUBLISH_LICENSE_NAME
url = PUBLISH_LICENSE_URL
}
}
developers {
developer {
id = PUBLISH_DEVELOPER_ID
name = PUBLISH_DEVELOPER_NAME
email = PUBLISH_DEVELOPER_EMAIL
}
}
// Version control info, if you're using GitHub, follow the format as seen here
scm {
connection = PUBLISH_CONNECTION
developerConnection = PUBLISH_CONNECTION_DEVELOPER
url = PUBLISH_CONNECTION_URL
}
// A slightly hacky fix so that your POM will include any transitive dependencies
// that your library builds upon
withXml {
def dependenciesNode = asNode().appendNode('dependencies')

project.configurations.implementation.allDependencies.each {
def dependencyNode = dependenciesNode.appendNode('dependency')
dependencyNode.appendNode('groupId', it.group)
dependencyNode.appendNode('artifactId', it.name)
dependencyNode.appendNode('version', it.version)
}
}
}
}
}
repositories {
// The repository to publish to, Sonatype/MavenCentral
maven {
// This is an arbitrary name, you may also use "mavencentral" or
// any other name that's descriptive for you
name = PUBLISH_MAVEN_NAME

def releasesRepoUrl = "https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/"
def snapshotsRepoUrl = "https://s01.oss.sonatype.org/content/repositories/snapshots/"
// You only need this if you want to publish snapshots, otherwise just set the URL
// to the release repo directly
url = version.endsWith('SNAPSHOT') ? snapshotsRepoUrl : releasesRepoUrl

// The username and password we've fetched earlier
credentials {
username ossrhUsername
password ossrhPassword
}
}
}
}
signing {
sign publishing.publications
}

0 comments on commit d739d99

Please sign in to comment.