129 lines
3.7 KiB
Groovy
129 lines
3.7 KiB
Groovy
|
// Copyright 2015-present Facebook. All Rights Reserved.
|
||
|
|
||
|
apply plugin: 'maven'
|
||
|
apply plugin: 'signing'
|
||
|
|
||
|
// 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 hasProperty('repositoryUrl') ? property('repositoryUrl') : 'https://oss.sonatype.org/service/local/staging/deploy/maven2/'
|
||
|
}
|
||
|
|
||
|
def getRepositoryUsername() {
|
||
|
return hasProperty('repositoryUsername') ? property('repositoryUsername') : ''
|
||
|
}
|
||
|
|
||
|
def getRepositoryPassword() {
|
||
|
return hasProperty('repositoryPassword') ? property('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 'BSD License'
|
||
|
url 'https://github.com/facebook/react-native/blob/master/LICENSE'
|
||
|
distribution 'repo'
|
||
|
}
|
||
|
}
|
||
|
|
||
|
developers {
|
||
|
developer {
|
||
|
id 'facebook'
|
||
|
name 'Facebook'
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
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.javaCompile) {
|
||
|
from variant.javaCompile.destinationDir
|
||
|
}
|
||
|
}
|
||
|
|
||
|
artifacts {
|
||
|
archives androidSourcesJar
|
||
|
// TODO Make Javadoc generation work with Java 1.8, currently only works with 1.7
|
||
|
// 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 {
|
||
|
beforeDeployment {
|
||
|
MavenDeployment deployment -> signing.signPom(deployment)
|
||
|
}
|
||
|
|
||
|
repository url: "file://${System.properties['user.home']}/.m2/repository"
|
||
|
configureReactNativePom pom
|
||
|
}
|
||
|
}
|
||
|
}
|