-
-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathbuild.gradle.kts
140 lines (114 loc) · 4.85 KB
/
build.gradle.kts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
/*
* Copyright (c) 2021-2025. caoccao.com Sam Cao
*
* 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
*
* 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.
*/
import org.gradle.internal.os.OperatingSystem
object Config {
const val GROUP_ID = "com.caoccao.javet"
const val NAME = "Javet Shell"
const val VERSION = Versions.JAVET_SHELL
const val URL = "https://github.com/caoccao/JavetShell"
object Projects {
const val JAVET = "com.caoccao.javet:javet-core:${Versions.JAVET}"
const val JAVET_NODE = "com.caoccao.javet:javet-node"
const val JAVET_V8 = "com.caoccao.javet:javet-v8"
// https://mvnrepository.com/artifact/com.caoccao.javet.buddy/javet-buddy
const val JAVET_BUDDY = "com.caoccao.javet.buddy:javet-buddy:${Versions.JAVET_BUDDY}"
const val JAVET_SWC4J = "com.caoccao.javet:swc4j:${Versions.JAVET_SWC4J}"
const val JAVENODE = "com.caoccao.javet:javenode:${Versions.JAVENODE}"
// https://mvnrepository.com/artifact/org.eclipse.jetty.websocket/javax-websocket-server-impl
const val JETTY_JAVAX_WEBSOCKET_SERVER_IMPL =
"org.eclipse.jetty.websocket:javax-websocket-server-impl:${Versions.JETTY_WEBSOCKET}"
// https://mvnrepository.com/artifact/org.eclipse.jetty.websocket/websocket-server
const val JETTY_WEBSOCKET_SERVER = "org.eclipse.jetty.websocket:websocket-server:${Versions.JETTY_WEBSOCKET}"
// https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-api
const val JUNIT_JUPITER_API = "org.junit.jupiter:junit-jupiter-api:${Versions.JUNIT}"
// https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-engine
const val JUNIT_JUPITER_ENGINE = "org.junit.jupiter:junit-jupiter-engine:${Versions.JUNIT}"
// https://mvnrepository.com/artifact/org.jetbrains.kotlin/kotlin-stdlib-jdk8
const val KOTLIN_STDLIB_JDK8 = "org.jetbrains.kotlin:kotlin-stdlib-jdk8:${Versions.KOTLIN_STDLIB_JDK8}"
// https://github.com/Kotlin/kotlinx-cli
// https://mvnrepository.com/artifact/org.jetbrains.kotlinx/kotlinx-cli-jvm
const val KOTLINX_CLI = "org.jetbrains.kotlinx:kotlinx-cli:${Versions.KOTLINX_CLI}"
// https://mvnrepository.com/artifact/io.vertx/vertx-core
const val VERTX = "io.vertx:vertx-core:${Versions.VERTX}"
}
object Versions {
const val JAVET = "4.0.0"
const val JAVET_BUDDY = "0.2.0"
const val JAVET_SHELL = "0.1.0"
const val JAVET_SWC4J = "1.3.0"
const val JAVENODE = "0.8.0"
const val JETTY_WEBSOCKET = "9.4.53.v20231009"
const val JUNIT = "5.10.1"
const val KOTLIN_STDLIB_JDK8 = "1.9.21"
const val KOTLINX_CLI = "0.3.6"
const val VERTX = "4.5.0"
}
}
plugins {
application
kotlin("jvm") version "1.9.21"
id("org.graalvm.buildtools.native") version "0.10.1"
}
repositories {
mavenCentral()
}
group = Config.GROUP_ID
version = Config.VERSION
dependencies {
val os = OperatingSystem.current()
val arch = System.getProperty("os.arch")
val osType = if (os.isWindows) "windows" else
if (os.isMacOsX) "macos" else
if (os.isLinux) "linux" else ""
val archType = if (arch == "aarch64" || arch == "arm64") "arm64" else "x86_64"
implementation(Config.Projects.JAVET)
implementation("${Config.Projects.JAVET_NODE}-$osType-$archType:${Config.Versions.JAVET}")
implementation("${Config.Projects.JAVET_V8}-$osType-$archType:${Config.Versions.JAVET}")
implementation(Config.Projects.JAVET_BUDDY)
implementation(Config.Projects.JAVET_SWC4J)
implementation(Config.Projects.JAVENODE)
implementation(Config.Projects.JETTY_JAVAX_WEBSOCKET_SERVER_IMPL)
implementation(Config.Projects.JETTY_WEBSOCKET_SERVER)
implementation(Config.Projects.KOTLIN_STDLIB_JDK8)
implementation(Config.Projects.KOTLINX_CLI)
implementation(Config.Projects.VERTX)
testImplementation(kotlin("test"))
}
application {
mainClass.set("${project.group}.shell.MainKt")
}
tasks.jar {
manifest {
attributes["Main-Class"] = "${project.group}.shell.MainKt"
}
configurations["compileClasspath"].forEach { file: File ->
from(zipTree(file.absoluteFile))
}
duplicatesStrategy = DuplicatesStrategy.INCLUDE
}
tasks.test {
useJUnitPlatform()
}
kotlin {
jvmToolchain(17)
}
graalvmNative {
binaries {
named("main") {
fallback.set(true)
}
}
}