apply plugin: 'maven-publish' Properties rootLocalProperties = new Properties() def rootLocalPropertiesFile = project.rootProject.file('local.properties') if (rootLocalPropertiesFile != null && rootLocalPropertiesFile.exists()) { rootLocalProperties.load(rootLocalPropertiesFile.newDataInputStream()) rootLocalProperties.each { name, value -> project.ext[name] = value } } Properties localProperties = new Properties() def localPropertiesFile = project.file('local.properties'); if (localPropertiesFile != null && localPropertiesFile.exists()) { localProperties.load(localPropertiesFile.newDataInputStream()) localProperties.each { name, value -> project.ext[name] = value } } def getPropertyValue(key) { return project.ext.has(key) ? project.ext.getProperty(key) : (project.rootProject.ext.has(key)?project.rootProject.ext.getProperty(key):null) } def projectGroupId = getPropertyValue('MAVEN_LIB_GROUP') def projectArtifactId = getPropertyValue("MAVEN_LIB_ARTIFACTID") def projectVersionName = getPropertyValue("MAVEN_LIB_VERSION") def projectDescription = getPropertyValue("MAVEN_LIB_DESCRIPTION") if (!projectGroupId) { println('missing parameter MAVEN_LIB_GROUP') return } if (!projectArtifactId) { println('missing parameter MAVEN_LIB_ARTIFACTID') return } if (!projectVersionName) { println('missing parameter MAVEN_LIB_VERSION') return } def isAndroidProject = project.hasProperty('android') if (isAndroidProject) { task androidJavadocs(type: Javadoc) { source = android.sourceSets.main.java.srcDirs classpath += project.files(android.getBootClasspath().join(File.pathSeparator)) } task javadocsJar(type: Jar, dependsOn: androidJavadocs) { archiveClassifier.set("javadoc") from androidJavadocs.destinationDir } task sourcesJar(type: Jar) { archiveClassifier.set("sources") from android.sourceSets.main.java.srcDirs } afterEvaluate { project -> tasks.all { Task task -> if (task.name.equalsIgnoreCase('publish')) { task.dependsOn tasks.getByName('assemble') } } } } else { task javadocsJar(type: Jar, dependsOn: javadoc) { archiveClassifier.set("javadoc") from javadoc.destinationDir } task sourcesJar(type: Jar) { archiveClassifier.set("sources") from sourceSets.main.allJava } } tasks.withType(Javadoc).all { options { encoding "UTF-8" charSet 'UTF-8' author true version true links "http://docs.oracle.com/javase/8/docs/api" if (isAndroidProject) { linksOffline "http://d.android.com/reference", "${android.sdkDirectory}/docs/reference" } failOnError = false } enabled = false } artifacts { archives javadocsJar, sourcesJar } afterEvaluate { publishing { publications { aar(MavenPublication) { groupId = projectGroupId artifactId = projectArtifactId version = projectVersionName if (isAndroidProject) { artifact(tasks.getByName("bundleReleaseAar")) } else { artifact("$buildDir/libs/${project.getName()}.jar") } // artifact javadocsJar // artifact sourcesJar pom { name = projectArtifactId description = projectDescription // If your project has a dedicated site, use its URL here withXml { def dependenciesNode = asNode().appendNode('dependencies') def scopes = [] if (configurations.hasProperty("compile")) { scopes.add(configurations.compile) } if (configurations.hasProperty("api")) { scopes.add(configurations.api) } if (configurations.hasProperty("implementation")) { scopes.add(configurations.implementation) } if (configurations.hasProperty("debugImplementation")) { scopes.add(configurations.debugImplementation) } if (configurations.hasProperty("releaseImplementation")) { scopes.add(configurations.releaseImplementation) } scopes.each { scope -> scope.allDependencies.each { if (it instanceof ModuleDependency) { boolean isTransitive = ((ModuleDependency) it).transitive if (!isTransitive) { return } } if (it.group == "unspecified" || it.version == 'unspecified') { return } if (it.group && it.name && it.version) { def dependencyNode = dependenciesNode.appendNode('dependency') dependencyNode.appendNode('groupId', it.group) dependencyNode.appendNode('artifactId', it.name) dependencyNode.appendNode('version', it.version) dependencyNode.appendNode('scope', scope.name) } } } } } } } repositories { maven { name = projectArtifactId url = uri("${rootProject.projectDir}/local-repo") } } } }