a9cd7750f4
CI / unit-test (push) Has been cancelled
CI / detect-changes (push) Has been cancelled
CI / build (push) Has been cancelled
Publish docs via GitHub Pages / Deploy docs (push) Has been cancelled
CI / test-harness (push) Has been cancelled
CI / generate-e2e-matrix (push) Has been cancelled
CI / e2e (push) Has been cancelled
CI / build-ui (push) Has been cancelled
Release Drafter / update_release_draft (push) Has been cancelled
UI v2 Integration CI / E2E (Integration) (push) Has been cancelled
UI v2 CI / Lint, Format & Test (push) Has been cancelled
UI v2 CI / E2E (Mocked) (push) Has been cancelled
95 lines
4.4 KiB
Groovy
95 lines
4.4 KiB
Groovy
/*
|
|
* Copyright 2023 Conductor authors
|
|
* <p>
|
|
* 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
|
|
* <p>
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
* <p>
|
|
* 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: 'groovy'
|
|
|
|
dependencies {
|
|
implementation project(':conductor-common')
|
|
|
|
compileOnly 'org.springframework.boot:spring-boot-starter'
|
|
compileOnly 'org.springframework.boot:spring-boot-starter-validation'
|
|
compileOnly 'org.springframework.retry:spring-retry'
|
|
|
|
implementation "com.fasterxml.jackson.core:jackson-annotations:${revFasterXml}"
|
|
implementation "com.fasterxml.jackson.core:jackson-databind:${revFasterXml}"
|
|
|
|
implementation "commons-io:commons-io:${revCommonsIo}"
|
|
|
|
implementation "com.google.protobuf:protobuf-java:${revProtoBuf}"
|
|
|
|
implementation "org.apache.commons:commons-lang3"
|
|
|
|
implementation "com.fasterxml.jackson.core:jackson-core:${revFasterXml}"
|
|
|
|
implementation "com.spotify:completable-futures:${revSpotifyCompletableFutures}"
|
|
|
|
implementation "com.jayway.jsonpath:json-path:${revJsonPath}"
|
|
|
|
implementation "io.reactivex:rxjava:${revRxJava}"
|
|
|
|
implementation "org.apache.bval:bval-jsr:${revBval}"
|
|
|
|
implementation "com.github.ben-manes.caffeine:caffeine"
|
|
|
|
// Nashorn is deprecated and removed in Java 15+, replaced by GraalJS
|
|
// implementation "org.openjdk.nashorn:nashorn-core:15.4"
|
|
|
|
implementation "io.micrometer:micrometer-core:${revMicrometer}"
|
|
implementation "com.google.guava:guava:${revGuava}"
|
|
|
|
//GraalVM dependencies for executing JavaScript and Python
|
|
// PINNED (#964): all GraalVM artifacts must use the same version (revGraalVM in dependencies.gradle)
|
|
implementation("org.graalvm.polyglot:polyglot:${revGraalVM}")
|
|
implementation("org.graalvm.js:js:${revGraalVM}")
|
|
implementation("org.graalvm.js:js-scriptengine:${revGraalVM}")
|
|
implementation("org.graalvm.polyglot:python:${revGraalVM}")
|
|
implementation "org.graalvm.sdk:graal-sdk:${revGraalVM}"
|
|
// Optimizing Truffle runtime (UPL 1.0). Without it GraalJS runs in the Truffle
|
|
// interpreter, which is 10-100x slower than the JIT-compiled path.
|
|
implementation("org.graalvm.truffle:truffle-runtime:${revGraalVM}")
|
|
|
|
// JAXB is not bundled with Java 11, dependencies added explicitly
|
|
// These are needed by Apache BVAL
|
|
implementation "jakarta.xml.bind:jakarta.xml.bind-api:${revJAXB}"
|
|
implementation "jakarta.activation:jakarta.activation-api:${revActivation}"
|
|
|
|
// Only add it as a test dependency. The actual jaxb runtime provider is provided when building the server.
|
|
testImplementation "org.glassfish.jaxb:jaxb-runtime:${revJAXB}"
|
|
|
|
testImplementation 'org.springframework.boot:spring-boot-starter-validation'
|
|
testImplementation 'org.springframework.retry:spring-retry'
|
|
testImplementation project(':conductor-common').sourceSets.test.output
|
|
|
|
testImplementation "org.apache.groovy:groovy-all:${revGroovy}"
|
|
testImplementation "org.spockframework:spock-core:${revSpock}"
|
|
testImplementation "org.spockframework:spock-spring:${revSpock}"
|
|
testImplementation "org.junit.vintage:junit-vintage-engine"
|
|
|
|
// Benchmark-only deps (test scope so they don't ship with production):
|
|
// Rhino — MPL 2.0, JVM-bytecode-compiled JS engine
|
|
testImplementation "org.mozilla:rhino:1.8.0"
|
|
// Javet — Apache 2.0 JNI bindings to V8 (BSD-3-Clause). Native lib for this host's
|
|
// arch only; add other -macos-x86_64 / -linux-x86_64 / -linux-arm64 variants for prod.
|
|
testImplementation "com.caoccao.javet:javet:4.1.2"
|
|
testImplementation "com.caoccao.javet:javet-v8-macos-arm64:4.1.2"
|
|
}
|
|
|
|
// Standalone benchmark runner for comparing JS engines on representative Inline-task scripts.
|
|
// Run with: ./gradlew :conductor-core:benchmarkScripts
|
|
task benchmarkScripts(type: JavaExec) {
|
|
group = "verification"
|
|
description = "Run JS engine benchmark (GraalJS interpreter vs Rhino vs Javet/V8)"
|
|
classpath = sourceSets.test.runtimeClasspath
|
|
mainClass = "com.netflix.conductor.benchmark.ScriptEngineBenchmark"
|
|
jvmArgs = ["-Xmx2g"]
|
|
}
|