// Copyright 2015-present Facebook. All Rights Reserved. apply plugin: 'maven' apply plugin: 'signing' // Gradle tasks for publishing to maven // 1) To install in local maven repo use :installArchives task // 2) To upload artifact to maven central use: :uploadArchives (you'd need to have the permission to do that) def isReleaseBuild() { return VERSION_NAME.contains('SNAPSHOT') == false } def getRepositoryUrl() { return project.hasProperty('repositoryUrl') ? property('repositoryUrl') : 'https://oss.sonatype.org/service/local/staging/deploy/maven2/' } def getRepositoryUsername() { return project.hasProperty('repositoryUsername') ? property('repositoryUsername') : '' } def getRepositoryPassword() { return project.hasProperty('repositoryPassword') ? property('repositoryPassword') : '' } def configureReactNativePom(def pom) { pom.project { name POM_NAME artifactId POM_ARTIFACT_ID packaging POM_PACKAGING description 'A framework for building native apps with React' url 'https://github.com/facebook/react-native' scm { url 'https://github.com/facebook/react-native.git' connection 'scm:git:https://github.com/facebook/react-native.git' developerConnection 'scm:git:git@github.com:facebook/react-native.git' } licenses { license { name 'MIT License' url 'https://github.com/facebook/react-native/blob/master/LICENSE' distribution 'repo' } } developers { developer { id 'facebook' name 'Facebook' } } } } if (JavaVersion.current().isJava8Compatible()) { allprojects { tasks.withType(Javadoc) { options.addStringOption('Xdoclint:none', '-quiet') } } } afterEvaluate { project -> task androidJavadoc(type: Javadoc) { source = android.sourceSets.main.java.srcDirs classpath += files(android.bootClasspath) classpath += files(project.getConfigurations().getByName('compile').asList()) include '**/*.java' exclude '**/ReactBuildConfig.java' } task androidJavadocJar(type: Jar, dependsOn: androidJavadoc) { classifier = 'javadoc' from androidJavadoc.destinationDir } task androidSourcesJar(type: Jar) { classifier = 'sources' from android.sourceSets.main.java.srcDirs include '**/*.java' } android.libraryVariants.all { variant -> def name = variant.name.capitalize() task "jar${name}"(type: Jar, dependsOn: variant.javaCompile) { from variant.javaCompile.destinationDir } } artifacts { archives androidSourcesJar archives androidJavadocJar } version = VERSION_NAME group = GROUP signing { required { isReleaseBuild() && gradle.taskGraph.hasTask('uploadArchives') } sign configurations.archives } uploadArchives { configuration = configurations.archives repositories.mavenDeployer { beforeDeployment { MavenDeployment deployment -> signing.signPom(deployment) } repository(url: getRepositoryUrl()) { authentication( userName: getRepositoryUsername(), password: getRepositoryPassword()) } configureReactNativePom pom } } task installArchives(type: Upload) { configuration = configurations.archives repositories.mavenDeployer { // Deploy to react-native/android, ready to publish to npm repository url: "file://${projectDir}/../android" configureReactNativePom pom } } }