mirror of
https://github.com/facebook/react-native.git
synced 2025-11-01 09:14:26 +00:00
use maven-publish plugin (#31611)
Summary: Gradle has been showing below warning for a while, and this PR fixes the warning using maven-publish plugin, thus taking us one step closer to Gradle 7.x. > The maven plugin has been deprecated. This is scheduled to be removed in Gradle 7.0. Please use the maven-publish plugin instead. Consult the upgrading guide for further information: https://docs.gradle.org/6.9/userguide/upgrading_version_5.html#legacy_publication_system_is_deprecated_and_replaced_with_the_publish_plugins Configured maven-publish plugin according to https://developer.android.com/studio/build/maven-publish-plugin, also added **installArchives** task for backwards compatibility. ## Changelog [Internal] [Changed] - use maven-publish plugin to build and publish Android artifact Pull Request resolved: https://github.com/facebook/react-native/pull/31611 Test Plan: ./gradlew :ReactAndroid:installArchives will create **android** directory for local maven repository with **react-native** package. Reviewed By: yungsters Differential Revision: D28802435 Pulled By: ShikaSD fbshipit-source-id: 7bc7650a700e1a61213c5ec238bcb24fdca954db
This commit is contained in:
committed by
Facebook GitHub Bot
parent
47b0be5f55
commit
fc6fc637bb
@@ -8,7 +8,7 @@
|
||||
plugins {
|
||||
id("com.android.library")
|
||||
id("com.facebook.react.codegen")
|
||||
id("maven")
|
||||
id("maven-publish")
|
||||
id("de.undercouch.download")
|
||||
}
|
||||
|
||||
@@ -18,6 +18,7 @@ import de.undercouch.gradle.tasks.download.Download
|
||||
import org.apache.tools.ant.taskdefs.condition.Os
|
||||
import org.apache.tools.ant.filters.ReplaceTokens
|
||||
|
||||
def AAR_OUTPUT_URL = "file://${projectDir}/../android"
|
||||
// We download various C++ open-source dependencies into downloads.
|
||||
// We then copy both the downloaded code and our custom makefiles and headers into third-party-ndk.
|
||||
// After that we build native code from src/main/jni with module path pointing at third-party-ndk.
|
||||
@@ -425,6 +426,10 @@ task extractJNIFiles {
|
||||
}
|
||||
}
|
||||
|
||||
task installArchives {
|
||||
dependsOn("publishReleasePublicationToNpmRepository")
|
||||
}
|
||||
|
||||
android {
|
||||
compileSdkVersion 30
|
||||
ndkVersion ANDROID_NDK_VERSION
|
||||
@@ -516,8 +521,6 @@ dependencies {
|
||||
androidTestImplementation("org.mockito:mockito-core:${MOCKITO_CORE_VERSION}")
|
||||
}
|
||||
|
||||
apply(from: "release.gradle")
|
||||
|
||||
react {
|
||||
// TODO: The library name is chosen for parity with Fabric components & iOS
|
||||
// This should be changed to a more generic name, e.g. `ReactCoreSpec`.
|
||||
@@ -526,3 +529,53 @@ react {
|
||||
reactNativeRootDir = file("$projectDir/..")
|
||||
useJavaGenerator = System.getenv("USE_CODEGEN_JAVAPOET") ?: false
|
||||
}
|
||||
|
||||
afterEvaluate {
|
||||
publishing {
|
||||
publications {
|
||||
release(MavenPublication) {
|
||||
// Applies the component for the release build variant.
|
||||
from components.release
|
||||
|
||||
// You can then customize attributes of the publication as shown below.
|
||||
artifactId = POM_ARTIFACT_ID
|
||||
groupId = GROUP
|
||||
version = VERSION_NAME
|
||||
|
||||
pom {
|
||||
name = POM_NAME
|
||||
description = "A framework for building native apps with React"
|
||||
url = "https://github.com/facebook/react-native"
|
||||
|
||||
developers {
|
||||
developer {
|
||||
id = "facebook"
|
||||
name = "Facebook"
|
||||
}
|
||||
}
|
||||
|
||||
licenses {
|
||||
license {
|
||||
name = "MIT License"
|
||||
url = "https://github.com/facebook/react-native/blob/master/LICENSE"
|
||||
distribution = "repo"
|
||||
}
|
||||
}
|
||||
|
||||
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"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
repositories {
|
||||
maven {
|
||||
name = "npm"
|
||||
url = AAR_OUTPUT_URL
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,87 +0,0 @@
|
||||
/*
|
||||
* 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 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 ->
|
||||
android.libraryVariants.all { variant ->
|
||||
def name = variant.name.capitalize()
|
||||
task "jar${name}"(type: Jar, dependsOn: variant.javaCompileProvider.get()) {
|
||||
from(variant.javaCompileProvider.get().destinationDir)
|
||||
}
|
||||
}
|
||||
|
||||
version = VERSION_NAME
|
||||
group = GROUP
|
||||
|
||||
signing {
|
||||
required { isReleaseBuild() && gradle.taskGraph.hasTask("uploadArchives") }
|
||||
sign(configurations.archives)
|
||||
}
|
||||
|
||||
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)
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user