Public An aar library to JCenter and MavenCenter
目录
- content {:toc}
Introduction
Jcenter And Maven Center
Jcenter and MavenCenter are moden time standar maven center. they maintained by Bintray
and sonatype
respectively.
As the artical , we just talk abut Bintray’s JCenter. Cause Android Studio now support Jcenter as default maven center.
First of all , you need create an accunt of Binray at and generate an API Key at
Edit
menu of account profile
Example Project
Android Gradle automated publish an aar library
Add buildScript to dependencies
buildscript{
dependencies{
//bintray: jcenter publish build plugin
classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.8.4'
}
}
apply plugin at library module
apply plugin: 'com.jfrog.bintray'
apply plugin: 'maven-publish'// maven publish method to create groups of artifacts
The bintray plugin supports three methods to create groups of artifacts: Configurations, Publications and Copying specific files using filesSpec. For more read, reference .
For maven ,we need sources.Jar
and javadoc.Jar
artifacts
create task as below for android gradle:
task sourcesJar(type: Jar) {
from android.sourceSets.main.java.srcDirs
classifier = 'sources'
}
task javadoc(type: Javadoc) {
source = android.sourceSets.main.java.srcDirs
classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
}
task javadocJar(type: Jar, dependsOn: javadoc) {
classifier = 'javadoc'
from javadoc.destinationDir
}
artifacts {
archives javadocJar
archives sourcesJar
}
Bintray configuration:
bintray {
user = project.hasProperty('bintrayUser') ? bintrayUser : System.getenv('BINTRAY_USER')//System enviroment variable
key = project.hasProperty('bintrayApiKey') ? bintrayApiKey : System.getenv('BINTRAY_API_KEY')
logger.log(LogLevel.ERROR, "user:" + user + " key:" + key)
publications = ['MyPublication']
pkg {
repo = 'Android-MVP-Arch'
name = 'jaylin-mvparch'
// userOrg = 'bintray_user'
licenses = ['Apache-2.0']
websiteUrl = 'https://github.com/linjonh/MvpArch'
issueTrackerUrl = 'https://github.com/linjonh/MvpArch/issues'
vcsUrl = 'https://github.com/linjonh/MvpArch.git'
publicDownloadNumbers = true
// githubRepo = 'linjonh/MvpArch' //Optional Github repository
// githubReleaseNotesFile = 'README.md' //Optional Github readme file
publish = true
version {
name = android.defaultConfig.versionName
desc = 'mvp architecture for android'
released = new Date()
vcsTag = android.defaultConfig.versionName
attributes = ['gradle-plugin': 'com.use.less:com.use.less.gradle:gradle-useless-plugin']
}
}
}
// Create the pom configuration:
def pomConfig = {
licenses {
license {
name "The Apache Software License, Version 2.0"
url "http://www.apache.org/licenses/LICENSE-2.0.txt"
distribution "repo"
}
}
developers {
developer {
id "linjonh"
name "linjianyou"
email "jaysen.lin@foxmail.com"
}
}
scm {
url "https://github.com/linjonh/MvpArch"
}
}
Maven publish mathod configuration:
publishing {
publications {
MyPublication(MavenPublication) {
artifact("$buildDir/outputs/aar/mvparchlibrary-release.aar")
artifact sourcesJar
artifact javadocJar
groupId 'top.jaylin.mvparch'
artifactId 'mvp-arch-android'
version android.defaultConfig.versionName
pom.withXml {
def dependenciesNode = asNode().appendNode('dependencies')
def root = asNode()
root.appendNode('description', 'mvp architecture for android')
root.appendNode('name', 'mvp-arch-android')
root.appendNode('url', 'https://github.com/linjonh/MvpArch')
root.children().last() + pomConfig
// Iterate over the implementation dependencies (we don't want the test ones), adding a node for each
//android gradle 3.0 use implementation
configurations.implementation.allDependencies.each {
// Ensure dependencies such as fileTree are not included.
logger.log(LogLevel.ERROR,"allDependencies.each:====>"+it.toString()+"\n")
if (it.name != 'unspecified') {
logger.log(LogLevel.ERROR,"allDependencies.each: !unspecified: "+it.name+"\n")
def dependencyNode = dependenciesNode.appendNode('dependency')
dependencyNode.appendNode('groupId', it.group)
dependencyNode.appendNode('artifactId', it.name)
dependencyNode.appendNode('version', it.version)
}
}
}
}
}
}
References
- (Set Me Up )