-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathbuild.gradle
More file actions
108 lines (84 loc) · 3.21 KB
/
build.gradle
File metadata and controls
108 lines (84 loc) · 3.21 KB
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
plugins {
id 'java'
id 'com.gradleup.shadow' version '8.3.5'
id 'xyz.jpenilla.run-paper' version '2.3.1'
}
group = 'io.github.louis5103'
version = '1.0-SNAPSHOT'
repositories {
mavenCentral()
maven { url = 'https://repo.papermc.io/repository/maven-public/' }
}
java {
toolchain.languageVersion = JavaLanguageVersion.of(21)
}
dependencies {
// === BOM 의존성들 (버전 관리) ===
// Hibernate BOM - Java 21 최적화 버전
implementation platform('org.hibernate.orm:hibernate-platform:6.6.1.Final')
// Jackson BOM - Java 21 최적화 버전
implementation platform('com.fasterxml.jackson:jackson-bom:2.18.1')
// SLF4J BOM - 최신 안정 버전
implementation platform('org.slf4j:slf4j-bom:2.0.16')
// Jakarta Platform BOM - Jakarta EE 관련 버전 통일
implementation platform('jakarta.platform:jakarta.jakartaee-bom:10.0.0')
// === Paper API (compileOnly) ===
compileOnly 'io.papermc.paper:paper-api:1.20.6-R0.1-SNAPSHOT'
// === 핵심 의존성들 (BOM으로 버전 관리됨) ===
// Hibernate - BOM으로 버전 자동 관리
implementation 'org.hibernate.orm:hibernate-core'
implementation 'org.hibernate.orm:hibernate-hikaricp'
// HikariCP - 별도 버전 명시 (Hibernate BOM에 포함되지 않음)
implementation 'com.zaxxer:HikariCP:5.1.0'
// Database Drivers
implementation 'com.mysql:mysql-connector-j:8.4.0' // MySQL
implementation 'org.xerial:sqlite-jdbc:3.46.1.3' // SQLite
// 로깅 - SLF4J BOM으로 버전 자동 관리
implementation 'org.slf4j:slf4j-api'
implementation 'org.slf4j:slf4j-simple'
// === 개발 도구 ===
compileOnly 'org.projectlombok:lombok:1.18.32'
annotationProcessor 'org.projectlombok:lombok:1.18.32'
}
tasks.withType(JavaCompile) {
options.encoding = 'UTF-8'
}
shadowJar {
archiveBaseName.set(project.name)
archiveClassifier.set('')
// 중복 파일 처리
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
// 패키지 충돌 방지를 위한 relocate
relocate 'org.hibernate', 'io.github.louis5103.libs.hibernate'
relocate 'com.zaxxer.hikari', 'io.github.louis5103.libs.hikaricp'
relocate 'com.mysql', 'io.github.louis5103.libs.mysql'
relocate 'org.slf4j', 'io.github.louis5103.libs.slf4j'
relocate 'jakarta.persistence', 'io.github.louis5103.libs.jakarta.persistence'
relocate 'antlr', 'io.github.louis5103.libs.antlr'
relocate 'com.fasterxml.jackson', 'io.github.louis5103.libs.jackson'
relocate 'net.bytebuddy', 'io.github.louis5103.libs.bytebuddy'
relocate 'org.jboss', 'io.github.louis5103.libs.jboss'
relocate 'org.dom4j', 'io.github.louis5103.libs.dom4j'
}
// 빌드 순서 보장
build {
dependsOn shadowJar
}
// plugin.yml 처리
processResources {
filesMatching('plugin.yml') {
expand(project.properties)
}
}
// 개발 환경 - 터미널 모드 개선
runServer {
minecraftVersion('1.20.6')
// 터미널 입력 개선 설정
systemProperty 'terminal.jline', 'true'
systemProperty 'terminal.ansi', 'true'
// JVM 옵션 추가
jvmArgs = [
'-Djline.terminal=auto',
'-Djansi.passthrough=true'
]
}