-
Notifications
You must be signed in to change notification settings - Fork 402
/
Copy pathbuild.gradle
126 lines (110 loc) · 3.63 KB
/
build.gradle
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
plugins {
id "application"
id "com.github.johnrengelman.shadow" version "7.1.2"
id "com.install4j.gradle" version "11.0.2"
id "de.undercouch.download" version "5.6.0"
}
archivesBaseName = "$group-$name"
mainClassName = "org.triplea.game.client.HeadedGameRunner"
ext {
releasesDir = file("$buildDir/releases")
releaseVersion = getProductVersion() + "+" + getCommitNumber()
}
dependencies {
implementation project(":game-app:ai")
implementation project(":game-app:domain-data")
implementation project(":game-app:game-core")
implementation project(":game-app:map-data")
implementation project(":http-clients:lobby-client")
implementation project(":lib:feign-common")
implementation project(":lib:java-extras")
implementation project(":lib:swing-lib")
implementation project(":lib:websocket-client")
testImplementation project(":lib:test-common")
}
install4j {
// If you wish to build the installers, you must install install4j and define the "install4jHomeDir" property on the
// command line (e.g. -Pinstall4jHomeDir=...) or in your personal Gradle properties (e.g. ~/.gradle/gradle.properties).
installDir = file(project.findProperty("install4jHomeDir") ?: ".")
}
jar {
manifest {
attributes "Main-Class": mainClassName
}
}
clean.doFirst {
delete "$projectDir/.assets/"
delete "$projectDir/assets/"
}
task downloadAssets {
doLast {
download.run {
src "https://github.com/triplea-game/assets/releases/download/47/game_headed_assets.zip"
dest "$projectDir/.assets/assets.zip"
overwrite false
}
copy {
from zipTree(file("$projectDir/.assets/assets.zip"))
into "$projectDir/assets/"
}
}
}
run {
dependsOn downloadAssets
}
runShadow {
dependsOn downloadAssets
}
// Downloads JDK bundles that are used to create installers
task downloadPlatformInstallerAssets(group: "release", dependsOn: downloadAssets) {
doLast {
[
"install4j/OpenJDK11U-jre_x86-32_windows_hotspot_11.0.4_11.tar.gz",
].each { path ->
download.run {
src "https://raw.githubusercontent.com/triplea-game/assets/master/$path"
dest "$buildDir/assets/$path"
overwrite false
}
}
}
}
task platformInstallers(
type: com.install4j.gradle.Install4jTask,
group: "release",
dependsOn: [shadowJar, downloadPlatformInstallerAssets]) {
projectFile = file("build.install4j")
release = releaseVersion
doLast {
ant.chmod(dir: releasesDir, perm: "+x", includes: "*.sh")
}
}
task portableInstaller(type: Zip, group: "release", dependsOn: shadowJar) {
from file(".triplea-root")
from(file("assets")) {
into "assets"
}
from(file("dice_servers")) {
into "dice_servers"
}
from(shadowJar.outputs) {
into "bin"
}
}
// creates installer files using install4j (eg: install.exe)
task release(group: "release", dependsOn: [portableInstaller, platformInstallers]) {
doLast {
publishArtifacts(portableInstaller.outputs.files + [
file("$releasesDir/TripleA_${releaseVersion}_macos.dmg"),
file("$releasesDir/TripleA_${releaseVersion}_unix.sh"),
file("$releasesDir/TripleA_${releaseVersion}_windows-32bit.exe"),
file("$releasesDir/TripleA_${releaseVersion}_windows-64bit.exe")
])
}
}
shadowJar {
// "archiveVersion" sets the version number on packaged jar files
// eg: "2.6+105234" in "lobby-server-2.6+50370c.jar"
archiveVersion = releaseVersion
archiveClassifier.set ""
}