Skip to content

Latest commit

 

History

History
 
 

README.md

OCI Java SDK Gradle Native Image Executable Example

This folder contains an example of using the SDK with the Streaming service. It depends on the oci-java-sdk-streaming module as well as oci-java-sdk-common-httpclient-jersey, therefore using the OCI SDK Jersey client implementation.

The build configures the Native Gradle Plugin to allow building executables with GraalVM Native Image.

Run the example

To run the example:

  • Set the ociJavaSdk property in the build.gradle file to the required value.
  • (Optionally) Install the required dependencies by running from the root directory:
    mvn install -pl bmc-streaming,bmc-common-httpclient-choices/bmc-common-httpclient-jersey -am -DskipTests
  • (Optionally) Add the mavenLocal() as a repository in build.gradle if you performed previous step.
  • Set your compartment id and execute the example with the required arguments:
    export COMPARTMENT_OCID="..."
    ./gradlew run --args=$COMPARTMENT_OCID

It is possible to execute any other example from the bmc-examples module by replacing the dependencies, moving a different example java file and setting the javaMainClass Maven property. To use Jersey3 simply change the oci-java-sdk-common-httpclient-jersey to oci-java-sdk-common-httpclient-jersey3 dependency.

Run the example as Native Image executable

To execute the example as a GraalVM native image executable run:

  • Perform the first 3 steps as above if required.
  • Build the native executable:
    ./gradlew clean nativeBuild
  • Run the native executable with the required arguments:
    export COMPARTMENT_OCID="..."
    ./build/native/nativeCompile/native-gradle-example $COMPARTMENT_OCID

Native Image building for GraalVM Java 8 versions

Perform these steps prior to building with Java 8 distributions of GraalVM:

  • Change version of the org.graalvm.buildtools.native plugin to version 0.9.25.
  • Add the following configuration in the end of build.gralde:
    graalvmNative {
        binaries {
            main {
                richOutput = false
                buildArgs.add("--allow-incomplete-classpath")
                buildArgs.add("--report-unsupported-elements-at-runtime")
            }
        }
    }