Skip to content

Commit 791a739

Browse files
committed
使用 Gradle 构建
1 parent e9bcc8d commit 791a739

File tree

12 files changed

+259
-573
lines changed

12 files changed

+259
-573
lines changed

.github/workflows/deploy.yml

Lines changed: 0 additions & 33 deletions
This file was deleted.

.github/workflows/gradle.yml

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
name: Java CI
2+
3+
on: [push, workflow_dispatch]
4+
5+
jobs:
6+
build:
7+
name: Java ${{ matrix.java }}
8+
runs-on: ubuntu-latest
9+
strategy:
10+
fail-fast: false
11+
matrix:
12+
java:
13+
[
14+
21,
15+
]
16+
steps:
17+
# Checkout side by side
18+
- name: Checkout
19+
uses: actions/checkout@v4
20+
with:
21+
path: Nukkit
22+
submodules: true
23+
- name: Checkout Network repo
24+
uses: actions/checkout@v4
25+
with:
26+
repository: EaseCation/Network
27+
path: Network
28+
# TODO: Remove if merge
29+
ref: gradle
30+
- name: Setup Gradle
31+
uses: gradle/actions/setup-gradle@v3
32+
- name: Set up JDK ${{ matrix.java }}
33+
uses: actions/setup-java@v4
34+
with:
35+
java-version: ${{ matrix.java }}
36+
distribution: temurin
37+
cache: 'gradle'
38+
- name: Build with Gradle
39+
working-directory: Nukkit
40+
run: gradle shadowJar
41+
- name: Archive artifacts
42+
uses: actions/upload-artifact@v4
43+
if: success()
44+
with:
45+
name: Nukkit-${{ matrix.java }}
46+
path: Nukkit/build/libs/nukkit-1.0.0-all.jar

.github/workflows/maven.yml

Lines changed: 0 additions & 38 deletions
This file was deleted.

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,3 +50,4 @@ logs
5050
logs/*
5151
resource_packs
5252
resource_packs/*
53+
.gradle

.mvn/wrapper/maven-wrapper.properties

Lines changed: 0 additions & 19 deletions
This file was deleted.

README.md

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,14 +29,29 @@ Links
2929

3030
Build JAR file
3131
-------------
32-
- `git submodule update --init`
33-
- `mvn clean package`
3432

35-
The compiled JAR can be found in the `target/` directory.
33+
First, clone this project.
34+
Then please also clone [EaseCation/Network]([email protected]:EaseCation/Network.git) next to this project as the graph following:
35+
36+
```plaintext
37+
root
38+
├── Nukkit
39+
└── Network
40+
```
41+
42+
For Gradle installation, please refer to this guide: [Installation - Gradle](https://gradle.org/install/).
43+
44+
Finally, you can run:
45+
46+
```shell
47+
gradle shadowJar
48+
```
49+
50+
The fat jar will be generated at `target/libs/nukkit-1.0.0-all.jar`
3651

3752
Running
3853
-------------
39-
Simply run `java -jar nukkit-1.0-SNAPSHOT.jar`.
54+
Simply run `java -jar nukkit.jar`.
4055

4156
Plugin API
4257
-------------

build.gradle.kts

Lines changed: 112 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,112 @@
1+
import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar
2+
import com.github.jengelman.gradle.plugins.shadow.transformers.Log4j2PluginsCacheFileTransformer
3+
import org.gradle.api.publish.maven.MavenPublication
4+
import org.gradle.internal.extensions.core.extra
5+
6+
plugins {
7+
application
8+
`java-library`
9+
`maven-publish`
10+
alias(libs.plugins.shadow)
11+
alias(libs.plugins.versions)
12+
}
13+
14+
repositories {
15+
mavenLocal()
16+
mavenCentral()
17+
maven { url = uri("https://repo.opencollab.dev/maven-releases/") }
18+
maven { url = uri("https://repo.opencollab.dev/maven-snapshots/") }
19+
}
20+
21+
group = "cn.nukkit"
22+
description = "Nukkit"
23+
24+
application {
25+
mainClass = "cn.nukkit.Nukkit"
26+
}
27+
28+
val shadowJarTask = tasks.named<ShadowJar>("shadowJar")
29+
if (gradle.parent != null) {
30+
tasks.register<Copy>("copyShadowJar") {
31+
group = "copy"
32+
val shadow = shadowJarTask.get()
33+
val name = shadow.archiveBaseName.get()
34+
val extension = shadow.archiveExtension.get()
35+
val fileName = "$name.$extension"
36+
val root = rootProject.projectDir.parentFile
37+
into(root)
38+
listOf(File(root, "_server"), File(root,"_login"), File(root, "_server1")).forEach { dest ->
39+
copy {
40+
from(shadow.outputs.files.singleFile)
41+
into(dest)
42+
rename { fileName }
43+
}
44+
}
45+
dependsOn(shadowJarTask)
46+
}
47+
}
48+
49+
tasks.shadowJar {
50+
transform(Log4j2PluginsCacheFileTransformer::class.java)
51+
exclude("**/module-info.class")
52+
}
53+
54+
val javaLanguageVersion = JavaLanguageVersion.of(21)
55+
the<JavaPluginExtension>().apply {
56+
toolchain {
57+
languageVersion = javaLanguageVersion
58+
}
59+
}
60+
61+
tasks.withType<JavaCompile> {
62+
options.encoding = "UTF-8"
63+
}
64+
65+
tasks.withType<Javadoc> {
66+
options.encoding = "UTF-8"
67+
}
68+
69+
70+
publishing {
71+
publications.create<MavenPublication>("maven") {
72+
from(components["java"])
73+
}
74+
}
75+
76+
dependencies {
77+
api("com.nukkitx.network:raknet")
78+
api(libs.apache.commons.compress)
79+
api(libs.apache.commons.lang3)
80+
api(libs.commons.io)
81+
api(libs.fastutil)
82+
api(libs.gson)
83+
api(libs.guava)
84+
api(libs.jackson)
85+
api(libs.jackson.datatype.guava)
86+
api(libs.jackson.datatype.jdk8)
87+
api(libs.jline.reader)
88+
api(libs.jline.terminal)
89+
api(libs.jline.terminal.jna)
90+
api(libs.jopt)
91+
api(libs.jwt)
92+
api(libs.leveldb.mcpe.jni)
93+
api(libs.leveldb.natives)
94+
api(libs.lmax.disruptor)
95+
api(libs.log4j.api)
96+
api(libs.log4j.core)
97+
api(libs.log4j.slf4j2)
98+
api(libs.minecrell.console)
99+
api(libs.org.cloudburstmc.upnp)
100+
api(libs.slf4j.api)
101+
api(libs.snakeyaml)
102+
api(libs.snakeyaml.engine)
103+
api(libs.snappy)
104+
api(libs.zero.allocation.hashing)
105+
testImplementation(libs.jupiter.api)
106+
testImplementation(libs.jupiter.engine)
107+
annotationProcessor(libs.lombok)
108+
annotationProcessor(libs.log4j.core)
109+
compileOnly(libs.lombok)
110+
compileOnly(libs.spotbugs.annotations)
111+
compileOnly(libs.javax.annotations)
112+
}

libs.versions.toml

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
[versions]
2+
jackson = "2.17.1"
3+
log4j = "2.23.1"
4+
jupiter = "5.10.2"
5+
6+
[plugins]
7+
shadow = { id = "com.gradleup.shadow", version = "8.3.6" }
8+
versions = { id = "com.github.ben-manes.versions", version = "0.52.0" }
9+
10+
[libraries]
11+
apache-commons-compress = { module = "org.apache.commons:commons-compress", version = "1.26.0" }
12+
apache-commons-lang3 = { module = "org.apache.commons:commons-lang3", version = "3.14.0" }
13+
commons-io = { module = "commons-io:commons-io", version = "2.15.1" }
14+
expiringmap = { module = "net.jodah:expiringmap", version = "0.5.11" }
15+
fastutil = { module = "it.unimi.dsi:fastutil", version = "8.5.12" }
16+
gson = { module = "com.google.code.gson:gson", version = "2.10.1" }
17+
guava = { module = "com.google.guava:guava", version = "33.0.0-jre" }
18+
jackson = { module = "com.fasterxml.jackson.core:jackson-databind", version.ref = "jackson" }
19+
jackson-datatype-guava = { module = "com.fasterxml.jackson.datatype:jackson-datatype-guava", version.ref = "jackson" }
20+
jackson-datatype-jdk8 = { module = "com.fasterxml.jackson.datatype:jackson-datatype-jdk8", version.ref = "jackson" }
21+
javax-annotations = { module = "javax.annotation:javax.annotation-api", version = "1.3.2" }
22+
jaxb-api = { module = "javax.xml.bind:jaxb-api", version = "2.3.1" }
23+
jaxb-runtime = { module = "org.glassfish.jaxb:jaxb-runtime", version = "4.0.3" }
24+
jline-reader = { module = "org.jline:jline-reader", version = "3.25.1" }
25+
jline-terminal = { module = "org.jline:jline-terminal", version = "3.25.1" }
26+
jline-terminal-jna = { module = "org.jline:jline-terminal-jna", version = "3.25.1" }
27+
jopt = { module = "net.sf.jopt-simple:jopt-simple", version = "5.0.4" }
28+
jupiter-api = { module = "org.junit.jupiter:junit-jupiter-api", version.ref = "jupiter" }
29+
jupiter-engine = { module = "org.junit.jupiter:junit-jupiter-engine", version.ref = "jupiter" }
30+
jwt = { module = "com.nimbusds:nimbus-jose-jwt", version = "9.37.3" }
31+
leveldb-mcpe-jni = { module = "net.daporkchop:leveldb-mcpe-jni", version = "0.0.10-SNAPSHOT" }
32+
leveldb-natives = { module = "net.daporkchop.lib:natives", version = "0.5.8-SNAPSHOT" }
33+
lmax-disruptor = { module = "com.lmax:disruptor", version = "4.0.0" }
34+
log4j-api = { module = "org.apache.logging.log4j:log4j-api", version.ref = "log4j" }
35+
log4j-core = { module = "org.apache.logging.log4j:log4j-core", version.ref = "log4j" }
36+
log4j-slf4j2 = { module = "org.apache.logging.log4j:log4j-slf4j2-impl", version.ref = "log4j" }
37+
lombok = { module = "org.projectlombok:lombok", version = "1.18.30" }
38+
minecrell-console = { module = "net.minecrell:terminalconsoleappender", version = "1.3.0" }
39+
org-cloudburstmc-upnp = { module = "org.cloudburstmc:upnp", version = "1.1.1" }
40+
org-msgpack-msgpack-core = { module = "org.msgpack:msgpack-core", version = "0.9.8" }
41+
slf4j-api = { module = "org.slf4j:slf4j-api", version = "2.0.12" }
42+
snakeyaml = { module = "org.yaml:snakeyaml", version = "2.2" }
43+
snakeyaml-engine = { module = "org.snakeyaml:snakeyaml-engine", version = "2.7" }
44+
snappy = { module = "org.xerial.snappy:snappy-java", version = "1.1.10.5" }
45+
spotbugs-annotations = { module = "com.github.spotbugs:spotbugs-annotations", version = "4.9.1" }
46+
zero-allocation-hashing = { module = "net.openhft:zero-allocation-hashing", version = "0.16" }

0 commit comments

Comments
 (0)