summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJiayu Liu <Jimexist@users.noreply.github.com>2022-05-08 13:01:41 +0800
committerGitHub <noreply@github.com>2022-05-08 01:01:41 -0400
commiteb62fa8d13f9860c4c877d0252e67ef21b013488 (patch)
tree1f4ff1428c8f81ce20ae4e2be6f1c6cf6de45585
parentbcac978ce97e9808866ed639f88095473ba5c261 (diff)
downloadthrift-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.gradle2
-rw-r--r--lib/java/gradle/environment.gradle16
-rw-r--r--lib/java/gradle/functionalTests.gradle36
-rwxr-xr-xlib/js/test/build.xml4
-rw-r--r--lib/kotlin/cross-test-client/build.gradle.kts15
-rw-r--r--lib/kotlin/cross-test-server/build.gradle.kts13
-rw-r--r--lib/kotlin/gradle.properties23
-rw-r--r--tutorial/java/build.properties5
-rw-r--r--tutorial/java/build.xml47
-rw-r--r--tutorial/java/src/JavaClient.java8
-rw-r--r--tutorial/java/src/JavaServer.java10
-rw-r--r--tutorial/js/build.properties5
-rw-r--r--tutorial/js/build.xml41
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>