mirror of
https://github.com/status-im/react-native.git
synced 2025-02-23 22:58:19 +00:00
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
141 lines
3.9 KiB
Groovy
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)
|
|
}
|
|
}
|
|
}
|