143 lines
3.9 KiB
Groovy
143 lines
3.9 KiB
Groovy
/*
|
|
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
*
|
|
* This source code is licensed under the MIT license found in the
|
|
* LICENSE file in the root directory of this source tree.
|
|
*/
|
|
|
|
apply(plugin: "maven")
|
|
apply(plugin: "signing")
|
|
|
|
ext {
|
|
AAR_OUTPUT_URL = "file://${projectDir}/../android"
|
|
}
|
|
|
|
// 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.findProperty("repositoryUrl") ?: "https://oss.sonatype.org/service/local/staging/deploy/maven2/"
|
|
}
|
|
|
|
def getRepositoryUsername() {
|
|
return project.findProperty("repositoryUsername") ?: ""
|
|
}
|
|
|
|
def getRepositoryPassword() {
|
|
return project.findProperty("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.javaCompileProvider.get()) {
|
|
from(variant.javaCompileProvider.get().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: AAR_OUTPUT_URL)
|
|
|
|
configureReactNativePom(pom)
|
|
}
|
|
}
|
|
}
|