react-native/settings.gradle.kts

42 lines
1.0 KiB
Plaintext
Raw Normal View History

/*
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
pluginManagement {
repositories {
mavenCentral()
google()
gradlePluginPortal()
}
includeBuild("packages/gradle-plugin/")
}
include(
":packages:react-native:ReactAndroid",
":packages:react-native:ReactAndroid:hermes-engine",
":packages:react-native:ReactAndroid:external-artifacts",
":packages:rn-tester:android:app")
codegen: set up Gradle plugin for more maintable codegen build steps Summary: Instead of sourcing-in a .gradle file to setup codegen tasks in Gradle, let's define a proper `com.facebook.react.codegen` Gradle plugin, so that any Gradle project (lib/app) can include it via: ``` plugins { id 'com.facebook.react.codegen' } ``` The idea (not yet implemented in this commit) is to then allow those projects to add this section in the projects: ``` codegen { enableCodegen = ... jsRootDir = ... } ``` This is more scalable and less hacky. Important notes: * The Gradle plugin should be prepared during the build, we're not going to publish it to Maven or other repo at this point. * This setup is inspired by composite build setup explained here: https://ncorti.com/blog/gradle-plugins-and-composite-builds * All android specific setup is added under `packages/react-native-codegen/android/` dir, but long term, we may want to move it up to `packages/react-native-codegen/` along side setup for other platforms. * As part of this setup, the plugin will have an option (to be validated) to produce Java specs using https://github.com/square/javapoet * This is the same library already used for React Native Android annotation processors * This generator will not deal with parsing Flow types into schema, it will just takes in the schema and produce Java code * We're evaluating whether JavaPoet is a better choice for Java code generation long term, vs building it in JS via string concatenation: https://github.com/facebook/react-native/blob/master/packages/react-native-codegen/src/generators/modules/GenerateModuleJavaSpec.js * This commit produces a sample Java code, not the actual codegen output Changelog: [Internal] To try this out, run this Gradle task: ``` USE_CODEGEN=1 ./gradlew :ReactAndroid:generateJava ``` Reviewed By: JoshuaGross, mdvacca Differential Revision: D22917315 fbshipit-source-id: 0b79dba939b73ff1305b4b4fd86ab897c7a48d53
2020-08-04 07:53:16 +00:00
includeBuild("packages/gradle-plugin/")
dependencyResolutionManagement {
versionCatalogs {
create("libs") { from(files("packages/react-native/gradle/libs.versions.toml")) }
}
}
rootProject.name = "react-native-github"
plugins {
id("org.gradle.toolchains.foojay-resolver-convention").version("0.5.0")
id("com.facebook.react.settings")
}
configure<com.facebook.react.ReactSettingsExtension> {
autolinkLibrariesFromCommand(
workingDirectory = file("packages/rn-tester/"), lockFiles = files("yarn.lock"))
}