|  | /* | 
|  | * Licensed to the Apache Software Foundation (ASF) under one | 
|  | * or more contributor license agreements. See the NOTICE file | 
|  | * distributed with this work for additional information | 
|  | * regarding copyright ownership. The ASF licenses this file | 
|  | * to you under the Apache License, Version 2.0 (the | 
|  | * "License"); you may not use this file except in compliance | 
|  | * with the License. You may obtain a copy of the License at | 
|  | * | 
|  | *   http://www.apache.org/licenses/LICENSE-2.0 | 
|  | * | 
|  | * Unless required by applicable law or agreed to in writing, | 
|  | * software distributed under the License is distributed on an | 
|  | * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | 
|  | * KIND, either express or implied. See the License for the | 
|  | * specific language governing permissions and limitations | 
|  | * under the License. | 
|  | */ | 
|  |  | 
|  | // Following Gradle best practices to keep build logic organized | 
|  |  | 
|  | // ---------------------------------------------------------------------------- | 
|  | // Installation subtasks, not used currently, we use "make install/fast" | 
|  | task installDist(type: Copy, group: 'Install') { | 
|  | description = "Copy Thrift JAR and dependencies into $installPath location" | 
|  |  | 
|  | destinationDir = file(installPath) | 
|  |  | 
|  | from jar | 
|  | from configurations.compile | 
|  | } | 
|  |  | 
|  | task installJavadoc(type: Copy, group: 'Install', dependsOn: javadoc) { | 
|  | description = "Install Thrift JavaDoc into $installJavadocPath location" | 
|  |  | 
|  | destinationDir = file(installJavadocPath) | 
|  |  | 
|  | from javadoc.destinationDir | 
|  | } | 
|  |  | 
|  | // This is not needed by Gradle builds but the remaining Ant builds seem to | 
|  | // need access to the generated test classes for Thrift unit tests so we | 
|  | // assist them to use it this way. | 
|  | task copyDependencies(type: Copy, group: 'Build') { | 
|  | description = 'Copy runtime dependencies in a common location for other Ant based projects' | 
|  | project.assemble.dependsOn it | 
|  |  | 
|  | destinationDir = file("$buildDir/deps") | 
|  | from configurations.testRuntime | 
|  | // exclude some very specific unit test dependencies | 
|  | exclude '**/junit*.jar', '**/mockito*.jar', '**/hamcrest*.jar' | 
|  | } | 
|  |  | 
|  | // ---------------------------------------------------------------------------- | 
|  | // Allow this configuration to be shared between install and uploadArchives tasks | 
|  | def configurePom(pom) { | 
|  | pom.project { | 
|  | name 'Apache Thrift' | 
|  | description 'Thrift is a software framework for scalable cross-language services development.' | 
|  | packaging 'jar' | 
|  | url 'http://thrift.apache.org' | 
|  |  | 
|  | scm { | 
|  | url 'https://github.com/apache/thrift' | 
|  | connection 'scm:git:https://github.com/apache/thrift.git' | 
|  | developerConnection 'scm:git:git@github.com:apache/thrift.git' | 
|  | } | 
|  |  | 
|  | licenses { | 
|  | license { | 
|  | name 'The Apache Software License, Version 2.0' | 
|  | url "${project.license}" | 
|  | distribution 'repo' | 
|  | } | 
|  | } | 
|  |  | 
|  | developers { | 
|  | developer { | 
|  | id 'dev' | 
|  | name 'Apache Thrift Developers' | 
|  | email 'dev@thrift.apache.org' | 
|  | } | 
|  | } | 
|  | } | 
|  |  | 
|  | pom.whenConfigured { | 
|  | // Fixup the scope for servlet-api to be 'provided' instead of 'compile' | 
|  | dependencies.find { dep -> dep.groupId == 'javax.servlet' && dep.artifactId == 'servlet-api' }.with { | 
|  | // it.optional = true | 
|  | it.scope = 'provided' | 
|  | } | 
|  | } | 
|  | } | 
|  |  | 
|  | install { | 
|  | repositories.mavenInstaller { | 
|  | configurePom(pom) | 
|  | } | 
|  | } | 
|  |  | 
|  | uploadArchives { | 
|  | dependsOn test // make sure we run unit tests when publishing | 
|  | repositories.mavenDeployer { | 
|  | // signPom will silently do nothing when no signing information is provided | 
|  | beforeDeployment { MavenDeployment deployment -> signing.signPom(deployment) } | 
|  | repository(url: project.mavenRepositoryUrl) { | 
|  | if (project.hasProperty('mavenUser') && project.hasProperty('mavenPassword')) { | 
|  | authentication(userName: mavenUser, password: mavenPassword) | 
|  | } | 
|  | } | 
|  | configurePom(pom) | 
|  | } | 
|  | } | 
|  |  | 
|  | // Signing configuration, optional, only when release and uploadArchives is activated | 
|  | signing { | 
|  | required { !version.endsWith("SNAPSHOT") && gradle.taskGraph.hasTask("uploadArchives") } | 
|  | sign configurations.archives | 
|  | } |