release.gradle 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. /*
  2. * Copyright (c) Facebook, Inc. and its affiliates.
  3. *
  4. * This source code is licensed under the MIT license found in the
  5. * LICENSE file in the root directory of this source tree.
  6. */
  7. apply(plugin: "maven")
  8. apply(plugin: "signing")
  9. ext {
  10. AAR_OUTPUT_URL = "file://${projectDir}/../android"
  11. }
  12. // Gradle tasks for publishing to maven
  13. // 1) To install in local maven repo use :installArchives task
  14. // 2) To upload artifact to maven central use: :uploadArchives (you'd need to have the permission to do that)
  15. def isReleaseBuild() {
  16. return VERSION_NAME.contains("SNAPSHOT") == false
  17. }
  18. def getRepositoryUrl() {
  19. return project.findProperty("repositoryUrl") ?: "https://oss.sonatype.org/service/local/staging/deploy/maven2/"
  20. }
  21. def getRepositoryUsername() {
  22. return project.findProperty("repositoryUsername") ?: ""
  23. }
  24. def getRepositoryPassword() {
  25. return project.findProperty("repositoryPassword") ?: ""
  26. }
  27. def configureReactNativePom(def pom) {
  28. pom.project {
  29. name(POM_NAME)
  30. artifactId(POM_ARTIFACT_ID)
  31. packaging(POM_PACKAGING)
  32. description("A framework for building native apps with React")
  33. url("https://github.com/facebook/react-native")
  34. scm {
  35. url("https://github.com/facebook/react-native.git")
  36. connection("scm:git:https://github.com/facebook/react-native.git")
  37. developerConnection("scm:git:git@github.com:facebook/react-native.git")
  38. }
  39. licenses {
  40. license {
  41. name("MIT License")
  42. url("https://github.com/facebook/react-native/blob/master/LICENSE")
  43. distribution("repo")
  44. }
  45. }
  46. developers {
  47. developer {
  48. id("facebook")
  49. name("Facebook")
  50. }
  51. }
  52. }
  53. }
  54. if (JavaVersion.current().isJava8Compatible()) {
  55. allprojects {
  56. tasks.withType(Javadoc) {
  57. options.addStringOption("Xdoclint:none", "-quiet")
  58. }
  59. }
  60. }
  61. afterEvaluate { project ->
  62. task androidJavadoc(type: Javadoc) {
  63. source = android.sourceSets.main.java.srcDirs
  64. classpath += files(android.bootClasspath)
  65. classpath += files(project.getConfigurations().getByName("compile").asList())
  66. include("**/*.java")
  67. exclude("**/ReactBuildConfig.java")
  68. }
  69. task androidJavadocJar(type: Jar, dependsOn: androidJavadoc) {
  70. classifier = "javadoc"
  71. from(androidJavadoc.destinationDir)
  72. }
  73. task androidSourcesJar(type: Jar) {
  74. classifier = "sources"
  75. from(android.sourceSets.main.java.srcDirs)
  76. include("**/*.java")
  77. }
  78. android.libraryVariants.all { variant ->
  79. def name = variant.name.capitalize()
  80. task "jar${name}"(type: Jar, dependsOn: variant.javaCompileProvider.get()) {
  81. from(variant.javaCompileProvider.get().destinationDir)
  82. }
  83. }
  84. artifacts {
  85. archives(androidSourcesJar)
  86. archives(androidJavadocJar)
  87. }
  88. version = VERSION_NAME
  89. group = GROUP
  90. signing {
  91. required { isReleaseBuild() && gradle.taskGraph.hasTask("uploadArchives") }
  92. sign(configurations.archives)
  93. }
  94. uploadArchives {
  95. configuration = configurations.archives
  96. repositories.mavenDeployer {
  97. beforeDeployment {
  98. MavenDeployment deployment -> signing.signPom(deployment)
  99. }
  100. repository(url: getRepositoryUrl()) {
  101. authentication(
  102. userName: getRepositoryUsername(),
  103. password: getRepositoryPassword())
  104. }
  105. configureReactNativePom(pom)
  106. }
  107. }
  108. task installArchives(type: Upload) {
  109. configuration = configurations.archives
  110. repositories.mavenDeployer {
  111. // Deploy to react-native/android, ready to publish to npm
  112. repository(url: AAR_OUTPUT_URL)
  113. configureReactNativePom(pom)
  114. }
  115. }
  116. }