Github user Alex-Vol commented on a diff in the pull request:
https://github.com/apache/thrift/pull/1468#discussion_r161389670
--- Diff: lib/java/build.gradle ---
@@ -0,0 +1,495 @@
+/*
+ * 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.
+ */
+
+apply plugin: 'java'
+apply plugin: 'maven'
+apply plugin: 'signing'
+
+description = 'Apache Thrift Java Library'
+
+defaultTasks 'build'
+
+// Override the build directory id CMake is used
+if (hasProperty('build.dir')) {
+ buildDir = file(property('build.dir'))
+}
+
+// In order to remain compatible with other Ant based builds in the system
+// we convert the gradle.properties into DSL friendly camelCased properties
+ext.thriftVersion = property('thrift.version')
+ext.installPath = property('install.path')
+ext.installJavadocPath = property('install.javadoc.path')
+
+ext.thriftRoot = file('../..')
+
+if (hasProperty('thrift.compiler')) {
+ ext.thriftCompiler = property('thrift.compiler')
+} else {
+ ext.thriftCompiler = "$thriftRoot/compiler/cpp/thrift"
+}
+
+ext.mvnRepo = property('mvn.repo')
+ext.apacheRepo = property('apache.repo')
+ext.mavenRepositoryUrl = property('maven-repository-url')
+
+// Versions used in this project
+ext.httpclientVersion = property('httpclient.version')
+ext.httpcoreVersion = property('httpcore.version')
+ext.servletVersion = property('servlet.version')
+ext.slf4jVersion = property('slf4j.version')
+ext.junitVersion = property('junit.version')
+ext.mockitoVersion = property('mockito.version')
+
+// Version components for this project
+group = property('thrift.groupid')
+
+if (Boolean.parseBoolean(project.release)) {
+ version = "$thriftVersion"
+} else {
+ version = "$thriftVersion-SNAPSHOT"
+}
+
+// In this section you declare where to find the dependencies of your
project
+repositories {
+ maven {
+ name 'Maven Central Repository'
+ url mvnRepo
+ }
+ maven {
+ name 'Apache Maven Repository'
+ url apacheRepo
+ }
+}
+
+dependencies {
+ compile "org.slf4j:slf4j-api:${slf4jVersion}"
+ compile "org.apache.httpcomponents:httpclient:${httpclientVersion}"
+ compile "org.apache.httpcomponents:httpcore:${httpcoreVersion}"
+ compile "javax.servlet:servlet-api:${servletVersion}"
+
+ testCompile "junit:junit:${junitVersion}"
+ testCompile "org.mockito:mockito-all:${mockitoVersion}"
+ testRuntime "org.slf4j:slf4j-log4j12:${slf4jVersion}"
+}
+
+// Generated code for Unit tests
+ext.genSrc = file("$buildDir/gen-java")
+ext.genBeanSrc = file("$buildDir/gen-javabean")
+ext.genReuseSrc = file("$buildDir/gen-javareuse")
+ext.genFullCamelSrc = file("$buildDir/gen-fullcamel")
+
+sourceSets {
+ main {
+ java {
+ srcDir 'src'
+ }
+ }
+
+ test {
+ java {
+ srcDir 'test'
+ srcDir genSrc
+ srcDir genBeanSrc
+ srcDir genReuseSrc
+ srcDir genFullCamelSrc
+ }
+ resources {
+ srcDir 'test'
+ include 'log4j.properties'
+ }
+ }
+}
+
+//
----------------------------------------------------------------------------
+// Code generation for Unit Testing
+ext.testThriftHome = file("$thriftRoot/test")
+
+// A callable closure to make this easier
+ext.thriftCompile = { Task task, String thriftFileName, String generator =
'java', File outputDir = genSrc ->
+ def thriftFile = file("$testThriftHome/$thriftFileName")
+ assert thriftFile.exists()
+
+ task.inputs.file thriftFile
+ task.outputs.dir outputDir
+
+ task.doLast {
+ outputDir.mkdirs()
+ exec {
+ executable file(thriftCompiler)
+ args '--gen', generator
+ args '-out', outputDir
+ args thriftFile
+ }
+ }
+}
+
+task generate(group: 'Build') {
+ description = 'Generate all unit test Thrift sources'
+}
+
+task generateJava(group: 'Build') {
+ description = 'Generate the thrift gen-java source'
+
+ generate.dependsOn it
+ compileTestJava.dependsOn it
+
+ thriftCompile(it, 'ThriftTest.thrift')
+ thriftCompile(it, 'JavaTypes.thrift')
+ thriftCompile(it, 'DebugProtoTest.thrift')
+ thriftCompile(it, 'OptionalRequiredTest.thrift')
+ thriftCompile(it, 'ManyOptionals.thrift')
+ thriftCompile(it, 'JavaDeepCopyTest.thrift')
+ thriftCompile(it, 'EnumContainersTest.thrift')
+}
+
+task generateBeanJava(group: 'Build') {
+ description = 'Generate the thrift gen-javabean source'
+
+ generate.dependsOn it
+ compileTestJava.dependsOn it
+
+ thriftCompile(it, 'JavaBeansTest.thrift', 'java:beans,nocamel',
genBeanSrc)
+}
+
+task generateReuseJava(group: 'Build') {
+ description = 'Generate the thrift gen-javareuse source'
+
+ generate.dependsOn it
+ compileTestJava.dependsOn it
+
+ thriftCompile(it, 'FullCamelTest.thrift', 'java:fullcamel',
genFullCamelSrc)
+}
+
+task generateFullCamelJava(group: 'Build') {
+ description = 'Generate the thrift gen-fullcamel source'
+
+ generate.dependsOn it
+ compileTestJava.dependsOn it
+
+ thriftCompile(it, 'ReuseObjects.thrift', 'java:reuse-objects',
genReuseSrc)
+}
+
+//
----------------------------------------------------------------------------
+// Compiler configuration details
+
+sourceCompatibility = '1.6'
+targetCompatibility = '1.6'
+
+tasks.withType(JavaCompile) {
+ options.encoding = 'UTF-8'
+ options.debug = true
+ options.deprecation = true
+ // options.compilerArgs.addAll('-Xlint:unchecked')
+}
+
+//
----------------------------------------------------------------------------
+// Jar packaging details
+processResources {
+ into('META-INF') {
+ from "$thriftRoot/LICENSE"
+ from "$thriftRoot/NOTICE"
+ rename('(.+)', '$1..txt')
+ }
+}
+
+jar {
+ manifest {
+ attributes([
+ "Implementation-Version": "${project.version}",
+ "Bundle-ManifestVersion": "2",
+ "Bundle-SymbolicName": "${project.group}",
+ "Bundle-Name": "Apache Thrift",
+ "Bundle-Version": "${project.version}",
+ "Bundle-Description": "Apache Thrift library",
+ "Bundle-License": "${project.license}",
+ "Bundle-ActivationPolicy": "lazy",
+ "Export-Package":
"${project.group}.async;uses:=\"${project.group}.protocol,${project.group}.transport,org.slf4j,${project.group}\";version=\"${version}\",${project.group}.protocol;uses:=\"${project.group}.transport,${project.group},${project.group}.scheme\";version=\"${version}\",${project.group}.server;uses:=\"${project.group}.transport,${project.group}.protocol,${project.group},org.slf4j,javax.servlet,javax.servlet.http\";version=\"${version}\",${project.group}.transport;uses:=\"${project.group}.protocol,${project.group},org.apache.http.client,org.apache.http.params,org.apache.http.entity,org.apache.http.client.methods,org.apache.http,org.slf4j,javax.net.ssl,javax.net,javax.security.sasl,javax.security.auth.callback\";version=\"${version}\",${project.group};uses:=\"${project.group}.protocol,${project.group}.async,${project.group}.server,${project.group}.transport,org.slf4j,org.apache.log4j,${project.group}.scheme\";version=\"${version}\",${project.group}.meta_data
;uses:=\"${project.group}\";version=\"${version}\",${project.group}.scheme;uses:=\"${project.group}.protocol,${project.group}\";version=\"${version}\"",
+ "Import-Package":
"javax.net,javax.net.ssl,javax.security.auth.callback,javax.security.sasl,javax.servlet;resolution:=optional,javax.servlet.http;resolution:=optional,org.slf4j;resolution:=optional;version=\"[1.4,2)\",org.apache.http.client;resolution:=optional,org.apache.http.params;resolution:=optional,org.apache.http.entity;resolution:=optional,org.apache.http.client.methods;resolution:=optional,org.apache.http;resolution:=optional"
+ ])
+ }
+}
+
+task sourcesJar(type: Jar, group: 'Build') {
+ description = 'Assembles a jar archive containing the main Java
sources.'
+
+ classifier 'sources'
+ from sourceSets.main.allSource
+}
+
+task javadocJar(type: Jar, dependsOn: javadoc, group: 'Build') {
+ description = 'Assembles a jar archive containing the JavaDoc.'
+
+ classifier 'javadoc'
+ from javadoc.destinationDir
+}
+
+artifacts {
+ archives sourcesJar
+ archives javadocJar
+}
+
+
+task copyDependencies(type: Copy, group: 'Build') {
+ description = 'Copy Test runtime dependencies in a common location for
other Ant based projects'
+ assemble.dependsOn it
+
+ destinationDir = file("$buildDir/deps")
+ from configurations.testRuntime
+}
+
+//
----------------------------------------------------------------------------
+// Installation subtasks, hooked on Maven install task
+task installDist(type: Copy, group: 'Install') {
+ description = "Copy Thrift JAR and dependencies into $installPath
location"
+ install.dependsOn it
+
+ destinationDir = file(installPath)
+
+ from jar
+ from configurations.compile
+}
+
+task installJavadoc(type: Copy, group: 'Install', dependsOn: javadoc) {
+ description = "Install Thrift JavaDoc into $installJavadocPath
location"
+ install.dependsOn it
+
+ destinationDir = file(installJavadocPath)
+
+ from javadoc.destinationDir
+}
+
+//
----------------------------------------------------------------------------
+// Unit test tasks and configurations
+task deprecatedEqualityTest(type: JavaExec, group: 'Validation') {
+ description = 'Run the non-JUnit test suite '
+ classpath = sourceSets.test.runtimeClasspath
+ main 'org.apache.thrift.test.EqualityTest'
+}
+
+task deprecatedJavaBeansTest(type: JavaExec, group: 'Validation') {
+ description = 'Run the non-JUnit test suite '
+ classpath = sourceSets.test.runtimeClasspath
+ main 'org.apache.thrift.test.JavaBeansTest'
+}
+
+task testclient(type: JavaExec, group: 'Validation') {
+ description="Run a test client"
+ classpath = sourceSets.test.runtimeClasspath
+ main 'org.apache.thrift.test.TestClient'
+
+ systemProperties = [
+ 'javax.net.ssl.trustStore': "${projectDir}/test/.truststore",
+ 'javax.net.ssl.trustStorePassword': 'thrift'
+ ]
+
+ if (project.hasProperty('testargs')) {
+ args "$testargs".split(' ')
+ }
+}
+
+task testserver(type: JavaExec, group: 'Validation') {
+ description="Run a test server"
+ classpath = sourceSets.test.runtimeClasspath
+ main 'org.apache.thrift.test.TestServer'
+
+ systemProperties = [
+ 'javax.net.ssl.keyStore': "${projectDir}/test/.keystore",
+ 'javax.net.ssl.keyStorePassword': 'thrift'
+ ]
+
+ if (project.hasProperty('testargs')) {
+ args "$testargs".split(' ')
+ }
+}
+
+task testnonblockingserver(type: JavaExec, group: 'Validation') {
+ description="Run a test nonblocking server"
+ classpath = sourceSets.test.runtimeClasspath
+ main 'org.apache.thrift.test.TestNonblockingServer'
+
+ systemProperties = [
+ 'javax.net.ssl.keyStore': "${projectDir}/test/.keystore",
+ 'javax.net.ssl.keyStorePassword': 'thrift'
+ ]
+
+ if (project.hasProperty('testargs')) {
+ args "$testargs".split(' ')
+ }
+}
+
+// Main Unit Test task configuration
+test {
+ description="Run the full test suite"
+ dependsOn deprecatedEqualityTest, deprecatedJavaBeansTest
+
+ // Allow repeating tests even after successful execution
+ if (project.hasProperty('rerunTests')) {
+ outputs.upToDateWhen { false }
+ }
+
+ include '**/Test*.class'
+ exclude '**/Test*\$*.class'
+ exclude '**/TestClient.class'
+ exclude '**/TestServer.class'
+ exclude '**/TestNonblockingServer.class'
+
+ maxHeapSize = '512m'
+ forkEvery = 1
+
+ systemProperties = [
+ 'build.test': "${compileTestJava.destinationDir}",
+ 'test.port': "${testPort}",
+ 'javax.net.ssl.trustStore': "${projectDir}/test/.truststore",
+ 'javax.net.ssl.trustStorePassword': 'thrift',
+ 'javax.net.ssl.keyStore': "${projectDir}/test/.keystore",
+ 'javax.net.ssl.keyStorePassword': 'thrift'
+ ]
+}
+
+//
----------------------------------------------------------------------------
+// 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://git-wip-us.apache.org/repos/asf?p=thrift.git'
+ connection
'scm:git:https://git-wip-us.apache.org/repos/asf/thrift.git'
+ developerConnection
'scm:git:https://git-wip-us.apache.org/repos/asf/thrift.git'
+ }
+
+ licenses {
+ license {
+ name 'The Apache Software License, Version 2.0'
+ url "${project.license}"
+ distribution 'repo'
+ }
+ }
+
+ developers {
--- End diff --
Sure, that would make the pom file much shorter and less likely to have
stale information.
---