-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbuild.gradle
127 lines (104 loc) · 2.94 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
127
plugins {
id 'org.jetbrains.kotlin.jvm' version '1.5.21'
}
group = 'de.mueslee'
version = '1.0'
ext {
roboJarFileName = "${robotClass}"
buildBattleDir = "${rootDir}/config/battles/"
buildBattleFile = buildBattleDir + battleFile
robocodeBattlesDir = "${robocodeHome}/battles/"
robocodeBattleFile = robocodeBattlesDir + battleFile
}
dependencies {
testImplementation 'org.junit.jupiter:junit-jupiter:5.7.2'
testImplementation 'org.assertj:assertj-core:3.20.2'
testImplementation 'org.awaitility:awaitility-kotlin:4.1.0'
implementation 'net.sf.robocode:robocode.core:1.9.4.2'
implementation 'net.sf.robocode:robocode.api:1.9.4.2'
implementation 'net.sf.robocode:robocode.repository:1.9.4.2'
implementation 'net.sf.robocode:robocode.host:1.9.4.2'
implementation 'net.sf.robocode:robocode.battle:1.9.4.2'
implementation 'net.sf.robocode:robocode.samples:1.9.4.2'
}
task roboJar(type: Jar) {
group = 'robocode'
archivesBaseName = roboJarFileName
duplicatesStrategy = 'EXCLUDE'
manifest {
attributes "robots": "${robotClass}"
}
from {
sourceSets.getByName("main").output
}
}
task registerRobo {
dependsOn roboJar
group = 'robocode'
doLast {
copy {
from fileTree("${rootDir}/build/libs/").include("**/**/*.jar").files
into "${robocodeHome}/robots/"
eachFile { details ->
println "Copied ${details}"
}
}
}
}
task generateBattleFile {
dependsOn registerRobo
group = 'robocode'
def battleRobots = "${robotClassEnemy}, ${robotClass} ${robotVersion}"
doFirst {
copy {
from buildBattleFile
into robocodeBattlesDir
eachFile { details ->
println "Copied ${details}"
}
}
}
doLast {
ant.replace(file: robocodeBattlesDir + battleFile, token: '$selectedRobots$', value: battleRobots)
}
}
task cleanup {
group = 'robocode'
doFirst {
def robotsPath = "${robocodeHome}/robots/"
delete fileTree(robotsPath).matching {
include "**/${roboJarFileName}*.jar"
include "**/robot.database"
}
delete fileTree(robocodeBattlesDir).matching {
include "**/${battleFile}"
}
}
}
tasks.clean.dependsOn(cleanup)
task startRobocode {
dependsOn cleanup, roboJar, registerRobo, generateBattleFile
group = 'robocode'
doLast {
exec {
commandLine 'java',
"-Xmx512M",
"-Ddebug=true",
"-DWORKINGDIRECTORY=${robocodeHome}",
"-cp", "${robocodeHome}/libs/*", "robocode.Robocode",
'-battle', robocodeBattleFile
}
}
}
repositories {
mavenCentral()
}
test {
useJUnitPlatform()
}
compileKotlin {
kotlinOptions.jvmTarget = '11'
}
compileTestKotlin {
kotlinOptions.jvmTarget = '11'
}