From c2511c9a70b32d602f4cd3aff9fbf74d8ae4fcf0 Mon Sep 17 00:00:00 2001 From: gabilang Date: Tue, 4 Jul 2023 10:13:13 +0530 Subject: [PATCH 1/9] Migrate to Java 17 --- .github/workflows/build-dev-branches.yml | 16 +++---- .github/workflows/build-main.yml | 8 ++-- .github/workflows/central-publish.yml | 8 ++-- .github/workflows/daily-build.yml | 8 ++-- .github/workflows/graalvm-check.yml | 2 +- .github/workflows/publish-release.yml | 8 ++-- .github/workflows/pull-request.yml | 16 +++---- README.md | 4 +- build-config/checkstyle/build.gradle | 4 +- build.gradle | 12 ++--- gradle.properties | 2 +- gradle/wrapper/gradle-wrapper.properties | 2 +- jaeger-extension-ballerina/Ballerina.toml | 44 +++++++++---------- jaeger-extension-ballerina/build.gradle | 9 +++- .../spotbugs-test-exclude.xml | 3 ++ 15 files changed, 77 insertions(+), 69 deletions(-) diff --git a/.github/workflows/build-dev-branches.yml b/.github/workflows/build-dev-branches.yml index 2beed0b3..049202f8 100644 --- a/.github/workflows/build-dev-branches.yml +++ b/.github/workflows/build-dev-branches.yml @@ -13,12 +13,12 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout Repository - uses: actions/checkout@v2 - - name: Set up JDK 11 - uses: actions/setup-java@v2 + uses: actions/checkout@v3 + - name: Set up JDK 17 + uses: actions/setup-java@v3 with: distribution: adopt - java-version: 11 + java-version: 17 - name: Grant execute permission for gradlew run: chmod +x gradlew - name: Build with Gradle @@ -38,12 +38,12 @@ jobs: runs-on: windows-latest steps: - name: Checkout Repository - uses: actions/checkout@v2 - - name: Set up JDK 11 - uses: actions/setup-java@v2 + uses: actions/checkout@v3 + - name: Set up JDK 17 + uses: actions/setup-java@v3 with: distribution: adopt - java-version: 11 + java-version: 17 - name: Grant execute permission for gradlew run: chmod +x gradlew - name: Download Jaeger server executable diff --git a/.github/workflows/build-main.yml b/.github/workflows/build-main.yml index 04521d91..598a920f 100644 --- a/.github/workflows/build-main.yml +++ b/.github/workflows/build-main.yml @@ -12,12 +12,12 @@ jobs: if: github.repository_owner == 'ballerina-platform' steps: - name: Checkout Repository - uses: actions/checkout@v2 - - name: Set up JDK 11 - uses: actions/setup-java@v2 + uses: actions/checkout@v3 + - name: Set up JDK 17 + uses: actions/setup-java@v3 with: distribution: adopt - java-version: 11 + java-version: 17 - name: Grant execute permission for gradlew run: chmod +x gradlew - name: Set Docker Host env variable diff --git a/.github/workflows/central-publish.yml b/.github/workflows/central-publish.yml index 853cb2a1..3b7e0ada 100644 --- a/.github/workflows/central-publish.yml +++ b/.github/workflows/central-publish.yml @@ -17,12 +17,12 @@ jobs: runs-on: ubuntu-latest if: github.repository_owner == 'ballerina-platform' steps: - - uses: actions/checkout@v2 - - name: Set up JDK 11 - uses: actions/setup-java@v2 + - uses: actions/checkout@v3 + - name: Set up JDK 17 + uses: actions/setup-java@v3 with: distribution: 'temurin' - java-version: 11 + java-version: 17 - name: Build with Gradle env: packageUser: ${{ github.actor }} diff --git a/.github/workflows/daily-build.yml b/.github/workflows/daily-build.yml index 678f3962..35409262 100644 --- a/.github/workflows/daily-build.yml +++ b/.github/workflows/daily-build.yml @@ -9,13 +9,13 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - - name: Set up JDK 11 - uses: actions/setup-java@v2 + - name: Set up JDK 17 + uses: actions/setup-java@v3 with: distribution: adopt - java-version: 11 + java-version: 17 # Build the project with Gradle - name: Build with Gradle diff --git a/.github/workflows/graalvm-check.yml b/.github/workflows/graalvm-check.yml index 9829a594..ceb2a478 100644 --- a/.github/workflows/graalvm-check.yml +++ b/.github/workflows/graalvm-check.yml @@ -16,7 +16,7 @@ jobs: uses: graalvm/setup-graalvm@v1 with: version: 'latest' - java-version: '11' + java-version: '17' components: 'native-image' github-token: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/publish-release.yml b/.github/workflows/publish-release.yml index 1cfb265c..5598462b 100644 --- a/.github/workflows/publish-release.yml +++ b/.github/workflows/publish-release.yml @@ -8,12 +8,12 @@ jobs: if: github.repository_owner == 'ballerina-platform' steps: - name: Checkout Repository - uses: actions/checkout@v2 - - name: Set up JDK 11 - uses: actions/setup-java@v2 + uses: actions/checkout@v3 + - name: Set up JDK 17 + uses: actions/setup-java@v3 with: distribution: adopt - java-version: 11 + java-version: 17 - name: Set version env variable run: echo "VERSION=$((grep -w 'version' | cut -d= -f2) < gradle.properties | rev | cut --complement -d- -f1 | rev)" >> $GITHUB_ENV - name: Pre release depenency version update diff --git a/.github/workflows/pull-request.yml b/.github/workflows/pull-request.yml index c40690a3..b4132532 100644 --- a/.github/workflows/pull-request.yml +++ b/.github/workflows/pull-request.yml @@ -7,12 +7,12 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout Repository - uses: actions/checkout@v2 - - name: Set up JDK 11 - uses: actions/setup-java@v2 + uses: actions/checkout@v3 + - name: Set up JDK 17 + uses: actions/setup-java@v3 with: distribution: adopt - java-version: 11 + java-version: 17 - name: Grant execute permission for gradlew run: chmod +x gradlew - name: Set Docker Host env variable @@ -34,12 +34,12 @@ jobs: runs-on: windows-latest steps: - name: Checkout Repository - uses: actions/checkout@v2 - - name: Set up JDK 11 - uses: actions/setup-java@v2 + uses: actions/checkout@v3 + - name: Set up JDK 17 + uses: actions/setup-java@v3 with: distribution: adopt - java-version: 11 + java-version: 17 - name: Grant execute permission for gradlew run: chmod +x gradlew - name: Download Jaeger server executable diff --git a/README.md b/README.md index 387f465a..e343815a 100644 --- a/README.md +++ b/README.md @@ -9,9 +9,9 @@ ### Setting Up the Prerequisites -1. Download and install Java SE Development Kit (JDK) version 11 (from one of the following locations). +1. Download and install Java SE Development Kit (JDK) version 17 (from one of the following locations). - * [Oracle](https://www.oracle.com/java/technologies/javase-jdk11-downloads.html) + * [Oracle](https://www.oracle.com/java/technologies/downloads/) * [OpenJDK](https://adoptopenjdk.net/) diff --git a/build-config/checkstyle/build.gradle b/build-config/checkstyle/build.gradle index 0aa45ba1..480a46d8 100644 --- a/build-config/checkstyle/build.gradle +++ b/build-config/checkstyle/build.gradle @@ -22,8 +22,8 @@ plugins { task downloadFiles(type: Download) { src([ - 'https://raw.githubusercontent.com/wso2/code-quality-tools/v1.3/checkstyle/checkstyle.xml', - 'https://raw.githubusercontent.com/wso2/code-quality-tools/v1.3/checkstyle/suppressions.xml' + 'https://raw.githubusercontent.com/wso2/code-quality-tools/v1.4/checkstyle/jdk-17/checkstyle.xml', + 'https://raw.githubusercontent.com/wso2/code-quality-tools/v1.4/checkstyle/jdk-17/suppressions.xml' ]) overwrite false onlyIfNewer true diff --git a/build.gradle b/build.gradle index 2706bb2b..64bff9c5 100644 --- a/build.gradle +++ b/build.gradle @@ -16,9 +16,9 @@ plugins { id 'checkstyle' - id "com.github.spotbugs" version "4.5.1" + id "com.github.spotbugs" version "5.0.14" id "net.researchgate.release" version "2.8.0" - id "de.undercouch.download" version "4.0.4" + id "de.undercouch.download" version "5.4.0" id "jacoco" } @@ -57,7 +57,7 @@ allprojects { } subprojects { - apply plugin: 'java' + apply plugin: 'java-library' apply plugin: 'checkstyle' apply plugin: 'com.github.spotbugs' @@ -98,7 +98,7 @@ subprojects { } checkstyle { - toolVersion '8.18' + toolVersion '10.12.1' } spotbugsMain { @@ -166,8 +166,8 @@ task codeCoverageReport(type: JacocoReport) { } reports { - xml.enabled = true - html.enabled = true + xml.required = true + html.required = true xml.destination = new File("${buildDir}/reports/jacoco/report.xml") html.destination = new File("${buildDir}/reports/jacoco/report.html") } diff --git a/gradle.properties b/gradle.properties index cb1366be..eee0c7f1 100644 --- a/gradle.properties +++ b/gradle.properties @@ -21,7 +21,7 @@ org.gradle.jvmargs='-Dfile.encoding=UTF-8' org.gradle.workers.max=3 # Native Dependency Versions -jaegerVersion=1.5.0 +jaegerVersion=1.8.1 openTelemetryVersion=1.0.0 openTelemetryAlphaVersion=1.0.0-alpha guavaVersion=30.1-jre diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 4c5803d1..fae08049 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-6.4-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.1.1-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/jaeger-extension-ballerina/Ballerina.toml b/jaeger-extension-ballerina/Ballerina.toml index d6937eb3..588d41a2 100644 --- a/jaeger-extension-ballerina/Ballerina.toml +++ b/jaeger-extension-ballerina/Ballerina.toml @@ -20,133 +20,133 @@ name = "jaeger" version = "@toml.version@" distribution = "2201.7.0" -[[platform.java11.dependency]] +[[platform.java17.dependency]] path = "../jaeger-extension-native/build/libs/jaeger-extension-native-@project.version@.jar" groupId = "ballerina" artifactId = "jaeger-extension-native" version = "@project.version@" -[[platform.java11.dependency]] +[[platform.java17.dependency]] path = "./lib/jaeger-core-@jaeger.version@.jar" groupId = "io.jaegertracing" artifactId = "jaeger-core" version = "@jaeger.version@" -[[platform.java11.dependency]] +[[platform.java17.dependency]] path = "./lib/opentelemetry-api-metrics-@openTelemetryAlpha.version@.jar" groupId = "io.opentelemetry" artifactId = "opentelemetry-api-metrics" version = "@openTelemetryAlpha.version@" -[[platform.java11.dependency]] +[[platform.java17.dependency]] path = "./lib/opentelemetry-sdk-trace-@opentelemetry.version@.jar" groupId = "io.opentelemetry" artifactId = "opentelemetry-sdk-trace" version = "@opentelemetry.version@" -[[platform.java11.dependency]] +[[platform.java17.dependency]] path = "./lib/opentelemetry-sdk-common-@opentelemetry.version@.jar" groupId = "io.opentelemetry" artifactId = "opentelemetry-sdk-common" version = "@opentelemetry.version@" -[[platform.java11.dependency]] +[[platform.java17.dependency]] path = "./lib/opentelemetry-semconv-@openTelemetryAlpha.version@.jar" groupId = "io.opentelemetry" artifactId = "opentelemetry-semconv" version = "@openTelemetryAlpha.version@" -[[platform.java11.dependency]] +[[platform.java17.dependency]] path = "./lib/opentelemetry-proto-@openTelemetryAlpha.version@.jar" groupId = "io.opentelemetry" artifactId = "opentelemetry-proto" version = "@openTelemetryAlpha.version@" -[[platform.java11.dependency]] +[[platform.java17.dependency]] path = "./lib/opentelemetry-exporter-otlp-trace-@opentelemetry.version@.jar" groupId = "io.opentelemetry" artifactId = "opentelemetry-exporter-otlp-trace" version = "@opentelemetry.version@" -[[platform.java11.dependency]] +[[platform.java17.dependency]] path = "./lib/opentelemetry-exporter-otlp-common-@opentelemetry.version@.jar" groupId = "io.opentelemetry" artifactId = "opentelemetry-exporter-otlp-common" version = "@opentelemetry.version@" -[[platform.java11.dependency]] +[[platform.java17.dependency]] path = "./lib/opentelemetry-extension-trace-propagators-@opentelemetry.version@.jar" groupId = "io.opentelemetry" artifactId = "opentelemetry-extension-trace-propagators" version = "@opentelemetry.version@" -[[platform.java11.dependency]] +[[platform.java17.dependency]] path = "./lib/guava-@guava.version@.jar" groupId = "com.google.guava" artifactId = "guava" version = "@guava.version@" -[[platform.java11.dependency]] +[[platform.java17.dependency]] path = "./lib/failureaccess-@failureAccess.version@.jar" groupId = "com.google.guava" artifactId = "failureaccess" version = "@failureAccess.version@" -[[platform.java11.dependency]] +[[platform.java17.dependency]] path = "./lib/grpc-api-@grpc.version@.jar" groupId = "io.grpc" artifactId = "grpc-api" version = "@grpc.version@" -[[platform.java11.dependency]] +[[platform.java17.dependency]] path = "./lib/grpc-context-@grpc.version@.jar" groupId = "io.grpc" artifactId = "grpc-context" version = "@grpc.version@" -[[platform.java11.dependency]] +[[platform.java17.dependency]] path = "./lib/grpc-core-@grpc.version@.jar" groupId = "io.grpc" artifactId = "grpc-core" version = "@grpc.version@" -[[platform.java11.dependency]] +[[platform.java17.dependency]] path = "./lib/grpc-stub-@grpc.version@.jar" groupId = "io.grpc" artifactId = "grpc-stub" version = "@grpc.version@" -[[platform.java11.dependency]] +[[platform.java17.dependency]] path = "./lib/grpc-protobuf-@grpc.version@.jar" groupId = "io.grpc" artifactId = "grpc-protobuf" version = "@grpc.version@" -[[platform.java11.dependency]] +[[platform.java17.dependency]] path = "./lib/grpc-protobuf-lite-@grpc.version@.jar" groupId = "io.grpc" artifactId = "grpc-protobuf-lite" version = "@grpc.version@" -[[platform.java11.dependency]] +[[platform.java17.dependency]] path = "./lib/grpc-netty-shaded-@grpc.version@.jar" groupId = "io.grpc" artifactId = "grpc-netty-shaded" version = "@grpc.version@" -[[platform.java11.dependency]] +[[platform.java17.dependency]] path = "./lib/protobuf-java-@protobuf.version@.jar" groupId = "com.google.protobuf" artifactId = "protobuf-java" version = "@protobuf.version@" -[[platform.java11.dependency]] +[[platform.java17.dependency]] path = "./lib/netty-handler-@netty.version@.jar" groupId = "io.netty" artifactId = "netty-handler" version = "@netty.version@" -[[platform.java11.dependency]] +[[platform.java17.dependency]] path = "./lib/perfmark-api-@perfmark.version@.jar" groupId = "io.perfmark" artifactId = "perfmark-api" diff --git a/jaeger-extension-ballerina/build.gradle b/jaeger-extension-ballerina/build.gradle index 55ea2298..783f3543 100644 --- a/jaeger-extension-ballerina/build.gradle +++ b/jaeger-extension-ballerina/build.gradle @@ -126,8 +126,8 @@ def tomlVersion = stripBallerinaExtensionVersion("${project.version}") def ballerinaCentralAccessToken = System.getenv('BALLERINA_CENTRAL_ACCESS_TOKEN') def originalConfig = ballerinaConfigFile.text def originalDependencyConfig = ballerinaDependencyFile.text -def artifactJar = file("$project.projectDir/target/cache/${packageOrg}/${packageName}/${tomlVersion}/java11/") -def platform = "java11" +def artifactJar = file("$project.projectDir/target/cache/${packageOrg}/${packageName}/${tomlVersion}/java17/") +def platform = "java17" def distributionBinPath = "${project.buildDir.absolutePath}/extracted-distributions/jballerina-tools-zip/jballerina-tools-${ballerinaLangVersion}/bin" def stripBallerinaExtensionVersion(String extVersion) { @@ -188,6 +188,11 @@ task ballerinaBuild { dependsOn updateTomlVerions dependsOn configurations.nativeJar dependsOn configurations.externalJars + dependsOn compileJava + dependsOn compileTestJava + dependsOn jar + dependsOn checkstyleMain + dependsOn checkstyleTest inputs.dir file(project.projectDir) finalizedBy(revertTomlFile) diff --git a/jaeger-extension-tests/spotbugs-test-exclude.xml b/jaeger-extension-tests/spotbugs-test-exclude.xml index 19627d6e..2c38628e 100644 --- a/jaeger-extension-tests/spotbugs-test-exclude.xml +++ b/jaeger-extension-tests/spotbugs-test-exclude.xml @@ -31,4 +31,7 @@ + + + From d7563b635733a5c4e7a547a348c8367c9208e663 Mon Sep 17 00:00:00 2001 From: gabilang Date: Thu, 20 Jul 2023 15:38:20 +0530 Subject: [PATCH 2/9] Change gradle version to 7.6.2 --- gradle/wrapper/gradle-wrapper.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index fae08049..98debb84 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.1.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-7.6.2-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists From cb4e7b35d63b049748d89441a98c83e82fbfd529 Mon Sep 17 00:00:00 2001 From: gabilang Date: Wed, 2 Aug 2023 13:18:35 +0530 Subject: [PATCH 3/9] Upgrade gradle version to 8.2.1 --- gradle.properties | 4 +- gradle/wrapper/gradle-wrapper.jar | Bin 55616 -> 63375 bytes gradle/wrapper/gradle-wrapper.properties | 4 +- gradlew | 286 ++++++++++++++--------- gradlew.bat | 40 ++-- 5 files changed, 194 insertions(+), 140 deletions(-) diff --git a/gradle.properties b/gradle.properties index eee0c7f1..3d66bb66 100644 --- a/gradle.properties +++ b/gradle.properties @@ -14,7 +14,7 @@ group=org.ballerinalang version=0.2.9-SNAPSHOT -ballerinaLangVersion=2201.7.0-20230619-175900-bb4e4544 +ballerinaLangVersion=2201.8.0-20230726-145300-b2bdf796 org.gradle.caching=true org.gradle.parallel=true org.gradle.jvmargs='-Dfile.encoding=UTF-8' @@ -45,7 +45,7 @@ stdlibUrlVersion=2.2.1 stdlibTaskVersion=2.2.1 stdlibFileVersion=1.2.1 stdlibCryptoVersion=2.2.1 -stdlibLogVersion=2.2.1 +stdlibLogVersion=2.8.1-20230718-085900-36c385c stdlibMimeVersion=2.2.1 stdlibCacheVersion=3.2.1 stdlibAuthVersion=2.2.1 diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 5c2d1cf016b3885f6930543d57b744ea8c220a1a..033e24c4cdf41af1ab109bc7f253b2b887023340 100644 GIT binary patch delta 43968 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 L5D+U{KfnDC_FtMN delta 36226 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 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 98debb84..9f4197d5 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,7 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.6.2-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.2.1-bin.zip +networkTimeout=10000 +validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew index b0d6d0ab..fcb6fca1 100755 --- a/gradlew +++ b/gradlew @@ -1,13 +1,13 @@ -#!/usr/bin/env sh +#!/bin/sh # -# Copyright 2015 the original author or authors. +# Copyright © 2015-2021 the original authors. # # Licensed 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 +# https://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, @@ -17,78 +17,110 @@ # ############################################################################## -## -## Gradle start up script for UN*X -## +# +# Gradle start up script for POSIX generated by Gradle. +# +# Important for running: +# +# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is +# noncompliant, but you have some other compliant shell such as ksh or +# bash, then to run this script, type that shell name before the whole +# command line, like: +# +# ksh Gradle +# +# Busybox and similar reduced shells will NOT work, because this script +# requires all of these POSIX shell features: +# * functions; +# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», +# «${var#prefix}», «${var%suffix}», and «$( cmd )»; +# * compound commands having a testable exit status, especially «case»; +# * various built-in commands including «command», «set», and «ulimit». +# +# Important for patching: +# +# (2) This script targets any POSIX shell, so it avoids extensions provided +# by Bash, Ksh, etc; in particular arrays are avoided. +# +# The "traditional" practice of packing multiple parameters into a +# space-separated string is a well documented source of bugs and security +# problems, so this is (mostly) avoided, by progressively accumulating +# options in "$@", and eventually passing that to Java. +# +# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, +# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; +# see the in-line comments for details. +# +# There are tweaks for specific operating systems such as AIX, CygWin, +# Darwin, MinGW, and NonStop. +# +# (3) This script is generated from the Groovy template +# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# within the Gradle project. +# +# You can find Gradle at https://github.com/gradle/gradle/. +# ############################################################################## # Attempt to set APP_HOME + # Resolve links: $0 may be a link -PRG="$0" -# Need this for relative symlinks. -while [ -h "$PRG" ] ; do - ls=`ls -ld "$PRG"` - link=`expr "$ls" : '.*-> \(.*\)$'` - if expr "$link" : '/.*' > /dev/null; then - PRG="$link" - else - PRG=`dirname "$PRG"`"/$link" - fi +app_path=$0 + +# Need this for daisy-chained symlinks. +while + APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path + [ -h "$app_path" ] +do + ls=$( ls -ld "$app_path" ) + link=${ls#*' -> '} + case $link in #( + /*) app_path=$link ;; #( + *) app_path=$APP_HOME$link ;; + esac done -SAVED="`pwd`" -cd "`dirname \"$PRG\"`/" >/dev/null -APP_HOME="`pwd -P`" -cd "$SAVED" >/dev/null -APP_NAME="Gradle" -APP_BASE_NAME=`basename "$0"` - -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' +# This is normally unused +# shellcheck disable=SC2034 +APP_BASE_NAME=${0##*/} +APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit # Use the maximum available, or set MAX_FD != -1 to use that value. -MAX_FD="maximum" +MAX_FD=maximum warn () { echo "$*" -} +} >&2 die () { echo echo "$*" echo exit 1 -} +} >&2 # OS specific support (must be 'true' or 'false'). cygwin=false msys=false darwin=false nonstop=false -case "`uname`" in - CYGWIN* ) - cygwin=true - ;; - Darwin* ) - darwin=true - ;; - MINGW* ) - msys=true - ;; - NONSTOP* ) - nonstop=true - ;; +case "$( uname )" in #( + CYGWIN* ) cygwin=true ;; #( + Darwin* ) darwin=true ;; #( + MSYS* | MINGW* ) msys=true ;; #( + NONSTOP* ) nonstop=true ;; esac CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + # Determine the Java command to use to start the JVM. if [ -n "$JAVA_HOME" ] ; then if [ -x "$JAVA_HOME/jre/sh/java" ] ; then # IBM's JDK on AIX uses strange locations for the executables - JAVACMD="$JAVA_HOME/jre/sh/java" + JAVACMD=$JAVA_HOME/jre/sh/java else - JAVACMD="$JAVA_HOME/bin/java" + JAVACMD=$JAVA_HOME/bin/java fi if [ ! -x "$JAVACMD" ] ; then die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME @@ -97,92 +129,120 @@ Please set the JAVA_HOME variable in your environment to match the location of your Java installation." fi else - JAVACMD="java" - which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + JAVACMD=java + if ! command -v java >/dev/null 2>&1 + then + die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. Please set the JAVA_HOME variable in your environment to match the location of your Java installation." + fi fi # Increase the maximum file descriptors if we can. -if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then - MAX_FD_LIMIT=`ulimit -H -n` - if [ $? -eq 0 ] ; then - if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then - MAX_FD="$MAX_FD_LIMIT" - fi - ulimit -n $MAX_FD - if [ $? -ne 0 ] ; then - warn "Could not set maximum file descriptor limit: $MAX_FD" - fi - else - warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" - fi +if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then + case $MAX_FD in #( + max*) + # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC3045 + MAX_FD=$( ulimit -H -n ) || + warn "Could not query maximum file descriptor limit" + esac + case $MAX_FD in #( + '' | soft) :;; #( + *) + # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC3045 + ulimit -n "$MAX_FD" || + warn "Could not set maximum file descriptor limit to $MAX_FD" + esac fi -# For Darwin, add options to specify how the application appears in the dock -if $darwin; then - GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" -fi +# Collect all arguments for the java command, stacking in reverse order: +# * args from the command line +# * the main class name +# * -classpath +# * -D...appname settings +# * --module-path (only if needed) +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. + +# For Cygwin or MSYS, switch paths to Windows format before running java +if "$cygwin" || "$msys" ; then + APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) + CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) + + JAVACMD=$( cygpath --unix "$JAVACMD" ) -# For Cygwin, switch paths to Windows format before running java -if $cygwin ; then - APP_HOME=`cygpath --path --mixed "$APP_HOME"` - CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` - JAVACMD=`cygpath --unix "$JAVACMD"` - - # We build the pattern for arguments to be converted via cygpath - ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` - SEP="" - for dir in $ROOTDIRSRAW ; do - ROOTDIRS="$ROOTDIRS$SEP$dir" - SEP="|" - done - OURCYGPATTERN="(^($ROOTDIRS))" - # Add a user-defined pattern to the cygpath arguments - if [ "$GRADLE_CYGPATTERN" != "" ] ; then - OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" - fi # Now convert the arguments - kludge to limit ourselves to /bin/sh - i=0 - for arg in "$@" ; do - CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` - CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option - - if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition - eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` - else - eval `echo args$i`="\"$arg\"" + for arg do + if + case $arg in #( + -*) false ;; # don't mess with options #( + /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath + [ -e "$t" ] ;; #( + *) false ;; + esac + then + arg=$( cygpath --path --ignore --mixed "$arg" ) fi - i=$((i+1)) + # Roll the args list around exactly as many times as the number of + # args, so each arg winds up back in the position where it started, but + # possibly modified. + # + # NB: a `for` loop captures its iteration list before it begins, so + # changing the positional parameters here affects neither the number of + # iterations, nor the values presented in `arg`. + shift # remove old arg + set -- "$@" "$arg" # push replacement arg done - case $i in - (0) set -- ;; - (1) set -- "$args0" ;; - (2) set -- "$args0" "$args1" ;; - (3) set -- "$args0" "$args1" "$args2" ;; - (4) set -- "$args0" "$args1" "$args2" "$args3" ;; - (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; - (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; - (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; - (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; - (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; - esac fi -# Escape application args -save () { - for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done - echo " " -} -APP_ARGS=$(save "$@") -# Collect all arguments for the java command, following the shell quoting and substitution rules -eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' -# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong -if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then - cd "$(dirname "$0")" +# Collect all arguments for the java command; +# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of +# shell script including quotes and variable substitutions, so put them in +# double quotes to make sure that they get re-expanded; and +# * put everything else in single quotes, so that it's not re-expanded. + +set -- \ + "-Dorg.gradle.appname=$APP_BASE_NAME" \ + -classpath "$CLASSPATH" \ + org.gradle.wrapper.GradleWrapperMain \ + "$@" + +# Stop when "xargs" is not available. +if ! command -v xargs >/dev/null 2>&1 +then + die "xargs is not available" fi +# Use "xargs" to parse quoted args. +# +# With -n1 it outputs one arg per line, with the quotes and backslashes removed. +# +# In Bash we could simply go: +# +# readarray ARGS < <( xargs -n1 <<<"$var" ) && +# set -- "${ARGS[@]}" "$@" +# +# but POSIX shell has neither arrays nor command substitution, so instead we +# post-process each arg (as a line of input to sed) to backslash-escape any +# character that might be a shell metacharacter, then use eval to reverse +# that process (while maintaining the separation between arguments), and wrap +# the whole thing up as a single "set" statement. +# +# This will of course break if any of these variables contains a newline or +# an unmatched quote. +# + +eval "set -- $( + printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | + xargs -n1 | + sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | + tr '\n' ' ' + )" '"$@"' + exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat index 15e1ee37..6689b85b 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -5,7 +5,7 @@ @rem you may not use this file except in compliance with the License. @rem You may obtain a copy of the License at @rem -@rem http://www.apache.org/licenses/LICENSE-2.0 +@rem https://www.apache.org/licenses/LICENSE-2.0 @rem @rem Unless required by applicable law or agreed to in writing, software @rem distributed under the License is distributed on an "AS IS" BASIS, @@ -14,7 +14,7 @@ @rem limitations under the License. @rem -@if "%DEBUG%" == "" @echo off +@if "%DEBUG%"=="" @echo off @rem ########################################################################## @rem @rem Gradle startup script for Windows @@ -25,10 +25,14 @@ if "%OS%"=="Windows_NT" setlocal set DIRNAME=%~dp0 -if "%DIRNAME%" == "" set DIRNAME=. +if "%DIRNAME%"=="" set DIRNAME=. +@rem This is normally unused set APP_BASE_NAME=%~n0 set APP_HOME=%DIRNAME% +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" @@ -37,7 +41,7 @@ if defined JAVA_HOME goto findJavaFromJavaHome set JAVA_EXE=java.exe %JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto init +if %ERRORLEVEL% equ 0 goto execute echo. echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. @@ -51,7 +55,7 @@ goto fail set JAVA_HOME=%JAVA_HOME:"=% set JAVA_EXE=%JAVA_HOME%/bin/java.exe -if exist "%JAVA_EXE%" goto init +if exist "%JAVA_EXE%" goto execute echo. echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% @@ -61,38 +65,26 @@ echo location of your Java installation. goto fail -:init -@rem Get command-line arguments, handling Windows variants - -if not "%OS%" == "Windows_NT" goto win9xME_args - -:win9xME_args -@rem Slurp the command line arguments. -set CMD_LINE_ARGS= -set _SKIP=2 - -:win9xME_args_slurp -if "x%~1" == "x" goto execute - -set CMD_LINE_ARGS=%* - :execute @rem Setup the command line set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + @rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* :end @rem End local scope for the variables with windows NT shell -if "%ERRORLEVEL%"=="0" goto mainEnd +if %ERRORLEVEL% equ 0 goto mainEnd :fail rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of rem the _cmd.exe /c_ return code! -if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 -exit /b 1 +set EXIT_CODE=%ERRORLEVEL% +if %EXIT_CODE% equ 0 set EXIT_CODE=1 +if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% +exit /b %EXIT_CODE% :mainEnd if "%OS%"=="Windows_NT" endlocal From 4cc0160c2f0f14e41614177316b2cfe76a02feb9 Mon Sep 17 00:00:00 2001 From: gabilang Date: Thu, 3 Aug 2023 14:05:08 +0530 Subject: [PATCH 4/9] Add git attributes file --- .gitattributes | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 .gitattributes diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 00000000..d13affe3 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,2 @@ +# Ensure all Java files use LF. +*.java eol=lf From e8a864b1708024ecee347f0ee25205197302fd54 Mon Sep 17 00:00:00 2001 From: gabilang Date: Thu, 3 Aug 2023 14:18:45 +0530 Subject: [PATCH 5/9] Get InetAddress from name --- .../observe/trace/jaeger/JaegerTracesTestCase.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/jaeger-extension-tests/src/test/java/io/ballerina/observe/trace/jaeger/JaegerTracesTestCase.java b/jaeger-extension-tests/src/test/java/io/ballerina/observe/trace/jaeger/JaegerTracesTestCase.java index ebadfd96..9fb882b3 100644 --- a/jaeger-extension-tests/src/test/java/io/ballerina/observe/trace/jaeger/JaegerTracesTestCase.java +++ b/jaeger-extension-tests/src/test/java/io/ballerina/observe/trace/jaeger/JaegerTracesTestCase.java @@ -38,6 +38,7 @@ import java.io.File; import java.lang.reflect.Type; +import java.net.InetAddress; import java.nio.file.Paths; import java.util.Arrays; import java.util.Calendar; @@ -107,7 +108,7 @@ public void testJaegerMetrics(String host, int jaegerReportAddress, JaegerServer .getAbsolutePath(); int[] requiredPorts = {9091}; serverInstance.startServer(balFile, new String[]{"--observability-included"}, null, env, requiredPorts); - Utils.waitForPortsToOpen(requiredPorts, 1000 * 60, false, "localhost"); + Utils.waitForPortsToOpen(requiredPorts, 1000 * 60, false, InetAddress.getByName("localhost")); jaegerExtLogLeecher.waitForText(10000); // Send requests to generate metrics @@ -256,7 +257,7 @@ public void testJaegerDisabled() throws Exception { .getAbsolutePath(); int[] requiredPorts = {9091}; serverInstance.startServer(balFile, null, null, requiredPorts); - Utils.waitForPortsToOpen(requiredPorts, 1000 * 60, false, "localhost"); + Utils.waitForPortsToOpen(requiredPorts, 1000 * 60, false, InetAddress.getByName("localhost")); String responseData = HttpClientRequest.doGet(TEST_RESOURCE_URL).getData(); Assert.assertEquals(responseData, "Sum: 53"); @@ -284,7 +285,7 @@ public void testInvalidTracingProviderName() throws Exception { .getAbsolutePath(); int[] requiredPorts = {9091}; serverInstance.startServer(balFile, new String[]{"--observability-included"}, null, env, requiredPorts); - Utils.waitForPortsToOpen(requiredPorts, 1000 * 60, false, "localhost"); + Utils.waitForPortsToOpen(requiredPorts, 1000 * 60, false, InetAddress.getByName("localhost")); tracerNotFoundLog.waitForText(10000); String responseData = HttpClientRequest.doGet(TEST_RESOURCE_URL).getData(); From 1de9c2f4519cce9cfb2355c5dc4544537000798a Mon Sep 17 00:00:00 2001 From: gabilang Date: Thu, 3 Aug 2023 14:19:10 +0530 Subject: [PATCH 6/9] Update testng version --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 0bdf7464..841d82bd 100644 --- a/gradle.properties +++ b/gradle.properties @@ -54,7 +54,7 @@ stdlibOAuth2Version=2.2.1 stdlibUuidVersion=1.2.1 # Test Dependency Versions -testngVersion=6.14.3 +testngVersion=7.6.1 slf4jVersion=1.7.26 dockerJavaVersion=3.2.7 gsonVersion=2.8.6 From 1ff9cdf846433fbc27d8ba46f4e20c846ebdf94f Mon Sep 17 00:00:00 2001 From: gabilang Date: Tue, 8 Aug 2023 20:33:30 +0530 Subject: [PATCH 7/9] Update java minor version --- .github/workflows/build-dev-branches.yml | 4 ++-- .github/workflows/build-main.yml | 2 +- .github/workflows/central-publish.yml | 2 +- .github/workflows/daily-build.yml | 2 +- .github/workflows/graalvm-check.yml | 2 +- .github/workflows/publish-release.yml | 2 +- .github/workflows/pull-request.yml | 4 ++-- 7 files changed, 9 insertions(+), 9 deletions(-) diff --git a/.github/workflows/build-dev-branches.yml b/.github/workflows/build-dev-branches.yml index 049202f8..8d06c07e 100644 --- a/.github/workflows/build-dev-branches.yml +++ b/.github/workflows/build-dev-branches.yml @@ -18,7 +18,7 @@ jobs: uses: actions/setup-java@v3 with: distribution: adopt - java-version: 17 + java-version: 17.0.7 - name: Grant execute permission for gradlew run: chmod +x gradlew - name: Build with Gradle @@ -43,7 +43,7 @@ jobs: uses: actions/setup-java@v3 with: distribution: adopt - java-version: 17 + java-version: 17.0.7 - name: Grant execute permission for gradlew run: chmod +x gradlew - name: Download Jaeger server executable diff --git a/.github/workflows/build-main.yml b/.github/workflows/build-main.yml index 598a920f..eb17fb64 100644 --- a/.github/workflows/build-main.yml +++ b/.github/workflows/build-main.yml @@ -17,7 +17,7 @@ jobs: uses: actions/setup-java@v3 with: distribution: adopt - java-version: 17 + java-version: 17.0.7 - name: Grant execute permission for gradlew run: chmod +x gradlew - name: Set Docker Host env variable diff --git a/.github/workflows/central-publish.yml b/.github/workflows/central-publish.yml index 3b7e0ada..5afb9c37 100644 --- a/.github/workflows/central-publish.yml +++ b/.github/workflows/central-publish.yml @@ -22,7 +22,7 @@ jobs: uses: actions/setup-java@v3 with: distribution: 'temurin' - java-version: 17 + java-version: 17.0.7 - name: Build with Gradle env: packageUser: ${{ github.actor }} diff --git a/.github/workflows/daily-build.yml b/.github/workflows/daily-build.yml index 35409262..7d8f9396 100644 --- a/.github/workflows/daily-build.yml +++ b/.github/workflows/daily-build.yml @@ -15,7 +15,7 @@ jobs: uses: actions/setup-java@v3 with: distribution: adopt - java-version: 17 + java-version: 17.0.7 # Build the project with Gradle - name: Build with Gradle diff --git a/.github/workflows/graalvm-check.yml b/.github/workflows/graalvm-check.yml index ceb2a478..381093e1 100644 --- a/.github/workflows/graalvm-check.yml +++ b/.github/workflows/graalvm-check.yml @@ -16,7 +16,7 @@ jobs: uses: graalvm/setup-graalvm@v1 with: version: 'latest' - java-version: '17' + java-version: '17.0.7' components: 'native-image' github-token: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/publish-release.yml b/.github/workflows/publish-release.yml index 5598462b..b8fa9166 100644 --- a/.github/workflows/publish-release.yml +++ b/.github/workflows/publish-release.yml @@ -13,7 +13,7 @@ jobs: uses: actions/setup-java@v3 with: distribution: adopt - java-version: 17 + java-version: 17.0.7 - name: Set version env variable run: echo "VERSION=$((grep -w 'version' | cut -d= -f2) < gradle.properties | rev | cut --complement -d- -f1 | rev)" >> $GITHUB_ENV - name: Pre release depenency version update diff --git a/.github/workflows/pull-request.yml b/.github/workflows/pull-request.yml index b4132532..16661e79 100644 --- a/.github/workflows/pull-request.yml +++ b/.github/workflows/pull-request.yml @@ -12,7 +12,7 @@ jobs: uses: actions/setup-java@v3 with: distribution: adopt - java-version: 17 + java-version: 17.0.7 - name: Grant execute permission for gradlew run: chmod +x gradlew - name: Set Docker Host env variable @@ -39,7 +39,7 @@ jobs: uses: actions/setup-java@v3 with: distribution: adopt - java-version: 17 + java-version: 17.0.7 - name: Grant execute permission for gradlew run: chmod +x gradlew - name: Download Jaeger server executable From 17f19fe9bf75f3d88a9e2baac587b415c1592135 Mon Sep 17 00:00:00 2001 From: Gabilan Ganeshwaran Date: Thu, 10 Aug 2023 14:01:17 +0530 Subject: [PATCH 8/9] Fix merge conflict --- jaeger-extension-ballerina/Ballerina.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jaeger-extension-ballerina/Ballerina.toml b/jaeger-extension-ballerina/Ballerina.toml index bd2b9ed2..c574e646 100644 --- a/jaeger-extension-ballerina/Ballerina.toml +++ b/jaeger-extension-ballerina/Ballerina.toml @@ -20,7 +20,7 @@ name = "jaeger" version = "@toml.version@" distribution = "2201.7.0" -[[platform.java17.dependency]] +[platform.java17] graalvmCompatible = true [[platform.java17.dependency]] From 82f05e0d0179b26e0e8a9652a8ff504b14c32922 Mon Sep 17 00:00:00 2001 From: gabilang Date: Thu, 10 Aug 2023 15:46:23 +0530 Subject: [PATCH 9/9] Add dependency required from compileJava --- jaeger-extension-native/build.gradle | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/jaeger-extension-native/build.gradle b/jaeger-extension-native/build.gradle index 400563a8..58e100c5 100644 --- a/jaeger-extension-native/build.gradle +++ b/jaeger-extension-native/build.gradle @@ -15,7 +15,7 @@ */ plugins { - id 'java' + id 'java-library' } description = 'Ballerina - Jaeger Extension - Native Module' @@ -103,6 +103,7 @@ publishing { } task copyJavaClassFiles(type: Copy) { + dependsOn(compileJava) from("${project.buildDir}/classes") { exclude '**/module-info.class' include '**/*.class'