react-native/ReactAndroid/release.gradle
Dulmandakh 8ccc55fbd3 Prepare Groovy scripts for Kotlin DSL migration (#23355)
Summary:
Using Kotlin DSL in Gradle instead of Groovy will help detect problems early on using static typing, and it has advanced IDE support. This PR prepares Groovy script for Kotlin DSL migration per **Migrating build logic from Groovy to Kotlin** guide. Here is the excerpt:

>As a first migration step, it is recommended to prepare your Groovy build scripts by
> - unifying quotes using double quotes,
> - disambiguating function invocations and property assignments (using respectively parentheses and assignment operator).

See: https://guides.gradle.org/migrating-build-logic-from-groovy-to-kotlin/

[Android] [Changed] - Prepare Gradle scripts for Kotlin DSL migration
Pull Request resolved: https://github.com/facebook/react-native/pull/23355

Differential Revision: D14018504

Pulled By: mdvacca

fbshipit-source-id: 909982c715b640f102cbe723df578c9af7bae08e
2019-02-09 10:18:07 -08:00

141 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)
}
}
}