Skip to content

Commit 2a8867a

Browse files
Build script maintainance
Make use of build caching Update gradle wrapper Update shadow plugin Download dependencies at build time instead of config Change residence download source
1 parent 44d23c9 commit 2a8867a

File tree

3 files changed

+98
-6
lines changed

3 files changed

+98
-6
lines changed

build.gradle

Lines changed: 97 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,17 @@
44
// Add -Prelease to the build command to version the jars with release versions
55
// (defaults to dev build labeling)
66

7+
// TODO make sure that the timestamps for the jars are correct
8+
// TODO make sure that the yml resources are always updated and correct timestamps
9+
// TODO move resource retrieval to its own task
10+
// TODO move the MSConfig data to settings.gradle
11+
// TODO make sure that builds are fast
12+
// TODO build the spigot server jars automatically as needed
13+
// TODO create task to setup workspace
14+
// TODO make sure the clean task cleans everything properly
15+
// TODO make sure all builds can be cached where possible
16+
// TODO clean up dependency management
17+
718
buildscript {
819
repositories {
920
jcenter()
@@ -13,12 +24,14 @@ buildscript {
1324
}
1425
}
1526
dependencies {
16-
classpath "com.github.jengelman.gradle.plugins:shadow:2.0.1"
27+
classpath "com.github.jengelman.gradle.plugins:shadow:2.0.3"
28+
classpath 'de.undercouch:gradle-download-task:3.4.2'
1729
}
1830
}
1931

2032
apply plugin: 'java'
2133
apply plugin: 'com.github.johnrengelman.shadow'
34+
apply plugin: 'de.undercouch.download'
2235

2336
final String OPTION_DEPLOYMENT_NAMING = 'DeploymentNaming'
2437
final String OPTION_RELEASE = 'release'
@@ -96,6 +109,7 @@ def downloadFile(File file, URL url) {
96109
}
97110
}
98111

112+
// FIXME this should be setup as a task instead of a method running on configuration time
99113
// Ensures resource availability
100114
def magicspellsGetResources() {
101115
println 'Running the get resources phase'
@@ -117,25 +131,73 @@ def magicspellsGetResources() {
117131
println 'Finished running the get resources phase'
118132
}
119133

120-
magicspellsGetResources()
134+
task getResidence(type: Download) {
135+
dest new File(project.file(project.ext.magicspellsData.libDir), 'Residence.jar')
136+
src 'http://ltcraft.lt/Residence/download.php?file=Residence4.5.3.0.jar'
137+
overwrite false
138+
}
139+
140+
// FIXME this should not be run at configuration time
141+
//magicspellsGetResources()
142+
task downloadDependencies() {
143+
group = 'Setup'
144+
dependsOn = [
145+
'getResidence'
146+
]
147+
doFirst {
148+
magicspellsGetResources()
149+
}
150+
}
121151

152+
// FIXME fix up this task
122153
task magicspellsBuildVersion() {
123154
description = 'Assign version suffix in dev build format'
124155
msconfig.versionSuffix = "dev-${-> msconfig.datestampString}"
125156
}
126157

158+
// FIXME fix up this task
127159
task magicspellsReleaseVersion() {
128160
description = 'Assign version suffix in release format'
129161
if (project.hasProperty("${OPTION_RELEASE}")) msconfig.versionSuffix = 'Release'
130162
}
131163

164+
Spec<? super File> ymlFilter() {
165+
return new Spec() {
166+
boolean isSatisfiedBy(Object file) {
167+
if (!(file instanceof File)) return false
168+
return file.getName().endsWith("yml")
169+
}
170+
}
171+
}
172+
132173
def magicspellsClean() {
133174
// Delete old working directories
134175
project.delete project.ext.magicspellsData.coreBuildDir, project.ext.magicspellsData.teamsBuildDir, project.ext.magicspellsData.memoryBuildDir, project.ext.magicspellsData.shopBuildDir, project.ext.magicspellsData.townyBuildDir, project.ext.magicspellsData.factionsBuildDir, project.ext.magicspellsData.docDir, project.ext.magicspellsData.distDir
135176
project.file(project.ext.magicspellsData.distDir).mkdir()
136177
}
137178

138-
magicspellsClean()
179+
project.tasks.getByPath("clean").doFirst({magicspellsClean()})
180+
181+
def cleanYmlFiles() {
182+
def files = project.files(project.ext.magicspellsData.coreBuildDir)
183+
.plus(project.files(project.ext.magicspellsData.teamsBuildDir))
184+
.plus(project.files(project.ext.magicspellsData.memoryBuildDir))
185+
.plus(project.files(project.ext.magicspellsData.shopBuildDir))
186+
.plus(project.files(project.ext.magicspellsData.townyBuildDir))
187+
.plus(project.files(project.ext.magicspellsData.factionsBuildDir))
188+
.filter(project.ymlFilter())
189+
project.delete files
190+
}
191+
192+
def cleanDistFolder() {
193+
project.delete project.ext.magicspellsData.distDir
194+
project.file(project.ext.magicspellsData.distDir).mkdir()
195+
}
196+
197+
// FIXME this should be setup as a task instead of a method running on configuration time
198+
//magicspellsClean()
199+
cleanDistFolder()
200+
cleanYmlFiles()
139201

140202
def magicspellsClasspathBase() {
141203
return project.files("${-> project.ext.magicspellsData.libDir}${File.separator}spigot-1.12.jar")
@@ -171,8 +233,13 @@ def magicspellsClasspathFactions() {
171233
.plus(project.files("${-> project.ext.magicspellsData.libDir}${File.separator}Factions.jar"))
172234
}
173235

236+
// FIXME fix up this task
237+
// FIXME do more of this at build time, not config time
174238
task magicspellsCoreCompile(type: JavaCompile) {
175239
description = 'Compile the main MagicSpells java files'
240+
dependsOn = [
241+
'downloadDependencies'
242+
]
176243
File buildDir = project.file(msconfig.coreBuildDir)
177244
buildDir.mkdir()
178245
destinationDir = buildDir
@@ -184,6 +251,24 @@ task magicspellsCoreCompile(type: JavaCompile) {
184251
msconfig.stringVersionCore = "${msconfig.coreVersion}-${msconfig.versionSuffix}"
185252
}
186253

254+
FileCollection coreYml = null
255+
task updateCoreYmlFiles() {
256+
doFirst {
257+
coreYml = project.files("${msconfig.coreBuildDir}").filter(ymlFilter())
258+
}
259+
}
260+
261+
task magicspellsCopyResourcesClean(type: Delete) {
262+
dependsOn = [
263+
"updateCoreYmlFiles"
264+
]
265+
266+
doFirst {
267+
setProperty("delete", coreYml)
268+
}
269+
}
270+
271+
// FIXME fix up this task
187272
task magicspellsCoreCopyResources(type: Copy) {
188273
description = 'Copy yml resources for MagicSpells'
189274
from(msconfig.coreSrcDir) {
@@ -193,6 +278,7 @@ task magicspellsCoreCopyResources(type: Copy) {
193278
into "${msconfig.coreBuildDir}"
194279
}
195280

281+
// FIXME do more of this at build time, not config time
196282
task magicspellsCoreJar(type: com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar) {
197283
description = 'Create the main MagicSpells jar'
198284
dependsOn = [
@@ -215,6 +301,7 @@ task magicspellsCoreJar(type: com.github.jengelman.gradle.plugins.shadow.tasks.S
215301
println magicspellsCoreJar.excludes
216302
}
217303

304+
// FIXME do more of this at build time, not config time
218305
task magicspellsTeamsCompile(type: JavaCompile) {
219306
description = 'Compile the teams addon'
220307
dependsOn = [
@@ -232,6 +319,7 @@ task magicspellsTeamsCompile(type: JavaCompile) {
232319
sourceCompatibility = msconfig.javaTeamsVersion
233320
}
234321

322+
// FIXME fix up this task
235323
task magicspellsTeamsCopyResources(type: Copy) {
236324
description = 'Copy yml resources for MagicSpellsTeams'
237325
from(msconfig.teamsSrcDir) {
@@ -241,6 +329,7 @@ task magicspellsTeamsCopyResources(type: Copy) {
241329
into "${msconfig.teamsBuildDir}"
242330
}
243331

332+
// FIXME do more of this at build time, not config time
244333
task magicspellsTeamsJar(type: Jar) {
245334
description = 'Create the teams addon jar'
246335
dependsOn = [
@@ -253,6 +342,7 @@ task magicspellsTeamsJar(type: Jar) {
253342
from("${msconfig.teamsBuildDir}")
254343
}
255344

345+
// FIXME do more of this at build time, not config time
256346
task magicspellsMemoryCompile(type: JavaCompile) {
257347
description = 'Compile the memory addon'
258348
dependsOn = [
@@ -279,6 +369,7 @@ task magicspellsMemoryCopyResources(type: Copy) {
279369
into "${msconfig.memoryBuildDir}"
280370
}
281371

372+
// FIXME do more of this at build time, not config time
282373
// Create the memory jar file
283374
task magicspellsMemoryJar(type: Jar) {
284375
description = 'Create the memory addon jar'
@@ -292,6 +383,7 @@ task magicspellsMemoryJar(type: Jar) {
292383
from("${msconfig.memoryBuildDir}")
293384
}
294385

386+
// FIXME do more of this at build time, not config time
295387
// Compile shop addon
296388
task magicspellsShopCompile(type: JavaCompile) {
297389
description = 'Compile the shop addon'
@@ -333,6 +425,7 @@ task magicspellsShopJar(type: Jar) {
333425
from("${msconfig.shopBuildDir}")
334426
}
335427

428+
// FIXME do more of this at build time, not config time
336429
// Compile towny addon
337430
task magicspellsTownyCompile(type: JavaCompile) {
338431
description = 'Compile the Towny addon'
@@ -428,7 +521,7 @@ task magicspellsZip(type: Zip) {
428521
'magicspellsTownyJar',
429522
'magicspellsFactionsJar'
430523
]
431-
524+
432525
File distDir = project.file(msconfig.distDir)
433526

434527
from distDir

gradle/wrapper/gradle-wrapper.jar

-402 Bytes
Binary file not shown.
Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
1-
#Mon Nov 13 12:41:10 PST 2017
21
distributionBase=GRADLE_USER_HOME
32
distributionPath=wrapper/dists
3+
distributionUrl=https\://services.gradle.org/distributions/gradle-4.6-bin.zip
44
zipStoreBase=GRADLE_USER_HOME
55
zipStorePath=wrapper/dists
6-
distributionUrl=https\://services.gradle.org/distributions/gradle-4.3.1-all.zip

0 commit comments

Comments
 (0)