diff options
author | Jiayu Liu <Jimexist@users.noreply.github.com> | 2022-05-08 13:01:41 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-05-08 01:01:41 -0400 |
commit | eb62fa8d13f9860c4c877d0252e67ef21b013488 (patch) | |
tree | 1f4ff1428c8f81ce20ae4e2be6f1c6cf6de45585 | |
parent | bcac978ce97e9808866ed639f88095473ba5c261 (diff) | |
download | thrift-eb62fa8d13f9860c4c877d0252e67ef21b013488.tar.gz |
THRIFT-5553: use newer gradle API (#2561)
Prepare for moving to Gradle 7 by removing use of older Gradle directives
(except the use of maven; the transition to maven-publish is not included here)
-rw-r--r-- | lib/java/build.gradle | 2 | ||||
-rw-r--r-- | lib/java/gradle/environment.gradle | 16 | ||||
-rw-r--r-- | lib/java/gradle/functionalTests.gradle | 36 | ||||
-rwxr-xr-x | lib/js/test/build.xml | 4 | ||||
-rw-r--r-- | lib/kotlin/cross-test-client/build.gradle.kts | 15 | ||||
-rw-r--r-- | lib/kotlin/cross-test-server/build.gradle.kts | 13 | ||||
-rw-r--r-- | lib/kotlin/gradle.properties | 23 | ||||
-rw-r--r-- | tutorial/java/build.properties | 5 | ||||
-rw-r--r-- | tutorial/java/build.xml | 47 | ||||
-rw-r--r-- | tutorial/java/src/JavaClient.java | 8 | ||||
-rw-r--r-- | tutorial/java/src/JavaServer.java | 10 | ||||
-rw-r--r-- | tutorial/js/build.properties | 5 | ||||
-rw-r--r-- | tutorial/js/build.xml | 41 |
13 files changed, 180 insertions, 45 deletions
diff --git a/lib/java/build.gradle b/lib/java/build.gradle index 726d7b7f6..3e750fddc 100644 --- a/lib/java/build.gradle +++ b/lib/java/build.gradle @@ -39,7 +39,7 @@ plugins { id 'java-library' id 'maven' id 'signing' - id 'com.github.johnrengelman.shadow' version '4.0.4' + id 'com.github.johnrengelman.shadow' version '6.1.0' id "com.github.spotbugs" version "4.7.1" id "com.diffplug.spotless" version "6.4.2" } diff --git a/lib/java/gradle/environment.gradle b/lib/java/gradle/environment.gradle index 2f49a0d2a..224f10fec 100644 --- a/lib/java/gradle/environment.gradle +++ b/lib/java/gradle/environment.gradle @@ -64,14 +64,14 @@ repositories { } dependencies { - compile "org.slf4j:slf4j-api:${slf4jVersion}" - compile "org.apache.httpcomponents:httpclient:${httpclientVersion}" - compile "org.apache.httpcomponents:httpcore:${httpcoreVersion}" - compile "javax.servlet:javax.servlet-api:${servletVersion}" - compile "javax.annotation:javax.annotation-api:${javaxAnnotationVersion}" - compile "org.apache.commons:commons-lang3:3.12.0" + implementation "org.slf4j:slf4j-api:${slf4jVersion}" + implementation "org.apache.httpcomponents:httpclient:${httpclientVersion}" + implementation "org.apache.httpcomponents:httpcore:${httpcoreVersion}" + implementation "javax.servlet:javax.servlet-api:${servletVersion}" + implementation "javax.annotation:javax.annotation-api:${javaxAnnotationVersion}" + implementation "org.apache.commons:commons-lang3:3.12.0" testImplementation "org.junit.jupiter:junit-jupiter:${junitVersion}" - testCompile "org.mockito:mockito-all:${mockitoVersion}" - testRuntime "org.slf4j:slf4j-log4j12:${slf4jVersion}" + testImplementation "org.mockito:mockito-all:${mockitoVersion}" + testRuntimeOnly "org.slf4j:slf4j-log4j12:${slf4jVersion}" } diff --git a/lib/java/gradle/functionalTests.gradle b/lib/java/gradle/functionalTests.gradle index 15737f56e..e8a3e8955 100644 --- a/lib/java/gradle/functionalTests.gradle +++ b/lib/java/gradle/functionalTests.gradle @@ -34,15 +34,27 @@ sourceSets { } } +// see https://docs.gradle.org/current/userguide/java_library_plugin.html +// 1. defines cross test implementation that includes all test implementation, which in turn +// contains all implementation dependencies +// 2. defines cross test runtime that further includes test runtime only dependencies +// 3. the cross test implementation will need to depends on main and test output +// 4. shadow jar will package both main and test source set, along with cross test runtime dependencies configurations { - crossTestCompile { extendsFrom testCompile } - crossTestRuntime { extendsFrom crossTestCompile, testRuntime } + crossTestImplementation { + description "implementation for cross test" + extendsFrom testImplementation + } + crossTestRuntime { + description "runtime dependencies for cross test" + extendsFrom crossTestImplementation, testRuntimeOnly + } } dependencies { - crossTestCompile "org.apache.tomcat.embed:tomcat-embed-core:${tomcatEmbedVersion}" - crossTestCompile sourceSets.main.output - crossTestCompile sourceSets.test.output + crossTestImplementation "org.apache.tomcat.embed:tomcat-embed-core:${tomcatEmbedVersion}" + crossTestImplementation sourceSets.main.output + crossTestImplementation sourceSets.test.output } // I am using shadow plugin to make a self contained functional test Uber JAR that @@ -53,19 +65,17 @@ shadowJar { description = 'Assemble a test JAR file for cross-check execution' // make sure the runners are created when this runs dependsOn 'generateRunnerScriptForClient', 'generateRunnerScriptForServer', 'generateRunnerScriptForNonblockingServer', 'generateRunnerScriptForTServletServer' - - baseName = 'functionalTest' - destinationDir = file("$buildDir/functionalTestJar") - classifier = null - + archiveBaseName.set('functionalTest') + destinationDirectory = file("$buildDir/functionalTestJar") + archiveClassifier.set(null) // We do not need a version number for this internal jar - version = null - + archiveVersion.set(null) // Bundle the complete set of unit test classes including generated code // and the runtime dependencies in one JAR to expedite execution. + // see https://imperceptiblethoughts.com/shadow/custom-tasks/ from sourceSets.test.output from sourceSets.crossTest.output - configurations = [project.configurations.testRuntime] + configurations = [project.configurations.crossTestRuntime] } // Common script runner configuration elements diff --git a/lib/js/test/build.xml b/lib/js/test/build.xml index 833e5bd71..db8501229 100755 --- a/lib/js/test/build.xml +++ b/lib/js/test/build.xml @@ -45,9 +45,6 @@ <exclude name="libthrift*javadoc.jar" /> <exclude name="libthrift*sources.jar" /> </fileset> - <fileset dir="${thrift.java.dir}/build/deps"> - <include name="*.jar" /> - </fileset> <fileset dir="${build}/lib"> <include name="*.jar" /> </fileset> @@ -235,6 +232,7 @@ <dependency groupId="org.apache.httpcomponents" artifactId="httpclient" version="4.0.1"/> <dependency groupId="com.googlecode.jslint4java" artifactId="jslint4java-ant" version="1.4.6"/> <dependency groupId="eu.medsea.mimeutil" artifactId="mime-util" version="2.1.3"/> + <dependency groupId="javax.annotation" artifactId="javax.annotation-api" version="1.3.2"/> <remoteRepository url="${mvn.repo}"/> </artifact:dependencies> diff --git a/lib/kotlin/cross-test-client/build.gradle.kts b/lib/kotlin/cross-test-client/build.gradle.kts index e5f87dd69..5090de9e1 100644 --- a/lib/kotlin/cross-test-client/build.gradle.kts +++ b/lib/kotlin/cross-test-client/build.gradle.kts @@ -28,15 +28,26 @@ repositories { mavenCentral() } +val slf4jVersion: String by project +val httpclientVersion: String by project +val httpcoreVersion: String by project +val logbackVersion: String by project +val kotlinxCoroutinesJdk8Version: String by project + dependencies { implementation(platform("org.jetbrains.kotlin:kotlin-bom")) implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8") // https://mvnrepository.com/artifact/org.jetbrains.kotlinx/kotlinx-coroutines-jdk8 - implementation("org.jetbrains.kotlinx:kotlinx-coroutines-jdk8:1.6.1") + implementation("org.jetbrains.kotlinx:kotlinx-coroutines-jdk8:$kotlinxCoroutinesJdk8Version") // https://mvnrepository.com/artifact/org.apache.thrift/libthrift implementation("org.apache.thrift:libthrift:INCLUDED") + implementation("org.slf4j:slf4j-api:$slf4jVersion") + implementation("org.apache.httpcomponents:httpclient:$httpclientVersion") + implementation("org.apache.httpcomponents:httpcore:$httpcoreVersion") // https://mvnrepository.com/artifact/ch.qos.logback/logback-classic - implementation("ch.qos.logback:logback-classic:1.3.0-alpha14") + implementation("ch.qos.logback:logback-classic:$logbackVersion") + testImplementation("org.jetbrains.kotlin:kotlin-test") + testImplementation("org.jetbrains.kotlin:kotlin-test-junit") } tasks { diff --git a/lib/kotlin/cross-test-server/build.gradle.kts b/lib/kotlin/cross-test-server/build.gradle.kts index 8a654d955..2246fae20 100644 --- a/lib/kotlin/cross-test-server/build.gradle.kts +++ b/lib/kotlin/cross-test-server/build.gradle.kts @@ -28,15 +28,24 @@ repositories { mavenCentral() } +val slf4jVersion: String by project +val httpcoreVersion: String by project +val logbackVersion: String by project +val kotlinxCoroutinesJdk8Version: String by project + dependencies { implementation(platform("org.jetbrains.kotlin:kotlin-bom")) implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8") // https://mvnrepository.com/artifact/org.jetbrains.kotlinx/kotlinx-coroutines-jdk8 - implementation("org.jetbrains.kotlinx:kotlinx-coroutines-jdk8:1.6.1") + implementation("org.jetbrains.kotlinx:kotlinx-coroutines-jdk8:$kotlinxCoroutinesJdk8Version") // https://mvnrepository.com/artifact/org.apache.thrift/libthrift implementation("org.apache.thrift:libthrift:INCLUDED") + implementation("org.slf4j:slf4j-api:$slf4jVersion") + implementation("org.apache.httpcomponents:httpcore:$httpcoreVersion") // https://mvnrepository.com/artifact/ch.qos.logback/logback-classic - implementation("ch.qos.logback:logback-classic:1.3.0-alpha14") + implementation("ch.qos.logback:logback-classic:$logbackVersion") + testImplementation("org.jetbrains.kotlin:kotlin-test") + testImplementation("org.jetbrains.kotlin:kotlin-test-junit") } tasks { diff --git a/lib/kotlin/gradle.properties b/lib/kotlin/gradle.properties new file mode 100644 index 000000000..0cba9be22 --- /dev/null +++ b/lib/kotlin/gradle.properties @@ -0,0 +1,23 @@ +# +# 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. +# +slf4jVersion=1.7.35 +httpcoreVersion=4.4.15 +httpclientVersion=4.5.13 +logbackVersion=1.3.0-alpha14 +kotlinxCoroutinesJdk8Version=1.6.1 diff --git a/tutorial/java/build.properties b/tutorial/java/build.properties new file mode 100644 index 000000000..845048cad --- /dev/null +++ b/tutorial/java/build.properties @@ -0,0 +1,5 @@ +# Maven Ant tasks Jar details +mvn.ant.task.version=2.1.3 +mvn.repo=https://repo1.maven.org/maven2 +mvn.ant.task.url=${mvn.repo}/org/apache/maven/maven-ant-tasks/${mvn.ant.task.version} +mvn.ant.task.jar=maven-ant-tasks-${mvn.ant.task.version}.jar diff --git a/tutorial/java/build.xml b/tutorial/java/build.xml index 55cdb8fab..3f837764e 100644 --- a/tutorial/java/build.xml +++ b/tutorial/java/build.xml @@ -16,22 +16,29 @@ specific language governing permissions and limitations under the License. --> -<project name="tutorial" default="tutorial" basedir="."> +<project name="tutorial" default="tutorial" basedir="." + xmlns:artifact="antlib:org.apache.maven.artifact.ant"> <description>Thrift Java Tutorial</description> <property name="src" location="src" /> <property name="gen" location="gen-java" /> <property name="build" location="build" /> + <property file="${basedir}/build.properties"/> + + <!-- the root directory, where you unpack thrift distibution (e.g.: thrift-0.x.x.tar.gz) --> + <property name="thrift.dir" location="../.." /> + <property name="thrift.java.dir" location="${thrift.dir}/lib/java" /> + <property name="build.tools.dir" location="${thrift.java.dir}/build/tools/"/> <path id="libs.classpath"> - <fileset dir="../../lib/java/build/libs"> + <fileset dir="${thrift.java.dir}/build/libs"> <include name="libthrift*.jar" /> <exclude name="libthrift*test.jar" /> <exclude name="libthrift*javadoc.jar" /> <exclude name="libthrift*sources.jar" /> </fileset> - <fileset dir="../../lib/java/build/deps"> + <fileset dir="${build}/lib"> <include name="*.jar" /> </fileset> </path> @@ -47,11 +54,13 @@ <target name="init"> <tstamp /> + <mkdir dir="${build.tools.dir}"/> <mkdir dir="${build}"/> <mkdir dir="${build}/log"/> + <mkdir dir="${build}/lib"/> </target> - <target name="compile" depends="init, generate"> + <target name="compile" depends="init, generate, resolve"> <javac compiler="modern" includeantruntime="false" srcdir="${gen}" destdir="${build}" classpathref="libs.classpath" /> <javac compiler="modern" includeantruntime="false" srcdir="${src}" destdir="${build}" classpathref="build.classpath" /> </target> @@ -112,4 +121,34 @@ <delete file="tutorial.jar" /> </target> + <target name="mvn.ant.tasks.download" depends="init, mvn.ant.tasks.check" unless="mvn.ant.tasks.found"> + <get src="${mvn.ant.task.url}/${mvn.ant.task.jar}" dest="${build.tools.dir}/${mvn.ant.task.jar}" usetimestamp="true"/> + </target> + + <target name="mvn.ant.tasks.check"> + <condition property="mvn.ant.tasks.found"> + <typefound uri="antlib:org.apache.maven.artifact.ant" name="artifact"/> + </condition> + </target> + + <target name="resolve" depends="mvn.ant.tasks.download" unless="mvn.finished"> + <typedef uri="antlib:org.apache.maven.artifact.ant" classpath="${thrift.java.dir}/build/tools/${mvn.ant.task.jar}"/> + + <artifact:dependencies filesetId="tutorial.dependency.jars"> + <dependency groupId="org.apache.httpcomponents" artifactId="httpclient" version="4.0.1"/> + <dependency groupId="com.googlecode.jslint4java" artifactId="jslint4java-ant" version="1.4.6"/> + <dependency groupId="eu.medsea.mimeutil" artifactId="mime-util" version="2.1.3"/> + <dependency groupId="javax.annotation" artifactId="javax.annotation-api" version="1.3.2"/> + <remoteRepository url="${mvn.repo}"/> + </artifact:dependencies> + + <!-- Copy the dependencies to the build/lib dir --> + <copy todir="${build}/lib"> + <fileset refid="tutorial.dependency.jars"/> + <mapper type="flatten"/> + </copy> + + <property name="mvn.finished" value="true"/> + </target> + </project> diff --git a/tutorial/java/src/JavaClient.java b/tutorial/java/src/JavaClient.java index 2e35d412a..bd0a15588 100644 --- a/tutorial/java/src/JavaClient.java +++ b/tutorial/java/src/JavaClient.java @@ -47,11 +47,11 @@ public class JavaClient { /* * Similar to the server, you can use the parameters to setup client parameters or * use the default settings. On the client side, you will need a TrustStore which - * contains the trusted certificate along with the public key. - * For this example it's a self-signed cert. + * contains the trusted certificate along with the public key. + * For this example it's a self-signed cert. */ TSSLTransportParameters params = new TSSLTransportParameters(); - params.setTrustStore("../../lib/java/test/.truststore", "thrift", "SunX509", "JKS"); + params.setTrustStore("../../lib/java/test/resources/.truststore", "thrift", "SunX509", "JKS"); /* * Get a client transport instead of a server transport. The connection is opened on * invocation of the factory method, no need to specifically call open() @@ -67,7 +67,7 @@ public class JavaClient { transport.close(); } catch (TException x) { x.printStackTrace(); - } + } } private static void perform(Calculator.Client client) throws TException diff --git a/tutorial/java/src/JavaServer.java b/tutorial/java/src/JavaServer.java index 788473a8d..026889da8 100644 --- a/tutorial/java/src/JavaServer.java +++ b/tutorial/java/src/JavaServer.java @@ -47,7 +47,7 @@ public class JavaServer { public void run() { simple(processor); } - }; + }; Runnable secure = new Runnable() { public void run() { secure(processor); @@ -81,19 +81,19 @@ public class JavaServer { /* * Use TSSLTransportParameters to setup the required SSL parameters. In this example * we are setting the keystore and the keystore password. Other things like algorithms, - * cipher suites, client auth etc can be set. + * cipher suites, client auth etc can be set. */ TSSLTransportParameters params = new TSSLTransportParameters(); // The Keystore contains the private key - params.setKeyStore("../../lib/java/test/.keystore", "thrift", null, null); + params.setKeyStore("../../lib/java/test/resources/.keystore", "thrift", null, null); /* * Use any of the TSSLTransportFactory to get a server transport with the appropriate * SSL configuration. You can use the default settings if properties are set in the command line. * Ex: -Djavax.net.ssl.keyStore=.keystore and -Djavax.net.ssl.keyStorePassword=thrift - * + * * Note: You need not explicitly call open(). The underlying server socket is bound on return - * from the factory class. + * from the factory class. */ TServerTransport serverTransport = TSSLTransportFactory.getServerSocket(9091, 0, null, params); TServer server = new TSimpleServer(new Args(serverTransport).processor(processor)); diff --git a/tutorial/js/build.properties b/tutorial/js/build.properties new file mode 100644 index 000000000..845048cad --- /dev/null +++ b/tutorial/js/build.properties @@ -0,0 +1,5 @@ +# Maven Ant tasks Jar details +mvn.ant.task.version=2.1.3 +mvn.repo=https://repo1.maven.org/maven2 +mvn.ant.task.url=${mvn.repo}/org/apache/maven/maven-ant-tasks/${mvn.ant.task.version} +mvn.ant.task.jar=maven-ant-tasks-${mvn.ant.task.version}.jar diff --git a/tutorial/js/build.xml b/tutorial/js/build.xml index 03a6e7c64..fc9fbdf33 100644 --- a/tutorial/js/build.xml +++ b/tutorial/js/build.xml @@ -16,7 +16,8 @@ specific language governing permissions and limitations under the License. --> -<project name="tutorial" default="test" basedir="."> +<project name="tutorial" default="test" basedir="." + xmlns:artifact="antlib:org.apache.maven.artifact.ant"> <description>Thrift JavaScript Tutorial</description> @@ -24,11 +25,13 @@ <property name="javasrc" location="../java/src" /> <property name="gen" location="../java/gen-java" /> <property name="build" location="build" /> + <property file="${basedir}/build.properties"/> <!-- the root directory, where you unpack thrift distibution (e.g. thrift-0.x.x.tar.gz) --> <property name="thrift.dir" location="../../" /> <!-- JavaScript tutorial depends on the java tutorial thrift handler and server infrastructure --> <property name="thrift.java.dir" location="${thrift.dir}/lib/java" /> + <property name="build.tools.dir" location="${thrift.java.dir}/build/tools/"/> <path id="libs.classpath"> <fileset dir="${thrift.java.dir}/build/libs"> @@ -37,7 +40,7 @@ <exclude name="libthrift*javadoc.jar" /> <exclude name="libthrift*sources.jar" /> </fileset> - <fileset dir="${thrift.java.dir}/build/deps"> + <fileset dir="${build}/lib"> <include name="*.jar" /> </fileset> </path> @@ -50,9 +53,10 @@ <target name="init"> <tstamp /> <mkdir dir="${build}"/> + <mkdir dir="${build}/lib"/> </target> - <target name="compile" depends="init"> + <target name="compile" depends="init, resolve"> <javac compiler="modern" includeantruntime="false" srcdir="${gen}" destdir="${build}" classpathref="libs.classpath" /> <javac compiler="modern" includeantruntime="false" srcdir="${javasrc}" destdir="${build}" classpathref="build.classpath"> <exclude name="JavaClient.java"/> @@ -89,4 +93,35 @@ <delete file="tutorial-js.jar" /> </target> + <target name="mvn.ant.tasks.download" depends="init, mvn.ant.tasks.check" unless="mvn.ant.tasks.found"> + <get src="${mvn.ant.task.url}/${mvn.ant.task.jar}" dest="${build.tools.dir}/${mvn.ant.task.jar}" usetimestamp="true"/> + </target> + + <target name="mvn.ant.tasks.check"> + <condition property="mvn.ant.tasks.found"> + <typefound uri="antlib:org.apache.maven.artifact.ant" name="artifact"/> + </condition> + </target> + + <target name="resolve" depends="mvn.ant.tasks.download" unless="mvn.finished"> + <typedef uri="antlib:org.apache.maven.artifact.ant" classpath="${thrift.java.dir}/build/tools/${mvn.ant.task.jar}"/> + + <artifact:dependencies filesetId="tutorial.dependency.jars"> + <dependency groupId="org.apache.httpcomponents" artifactId="httpclient" version="4.0.1"/> + <dependency groupId="com.googlecode.jslint4java" artifactId="jslint4java-ant" version="1.4.6"/> + <dependency groupId="eu.medsea.mimeutil" artifactId="mime-util" version="2.1.3"/> + <dependency groupId="javax.annotation" artifactId="javax.annotation-api" version="1.3.2"/> + <dependency groupId="org.slf4j" artifactId="slf4j-api" version="1.7.5"/> + <remoteRepository url="${mvn.repo}"/> + </artifact:dependencies> + + <!-- Copy the dependencies to the build/lib dir --> + <copy todir="${build}/lib"> + <fileset refid="tutorial.dependency.jars"/> + <mapper type="flatten"/> + </copy> + + <property name="mvn.finished" value="true"/> + </target> + </project> |