-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathbuild.gradle
executable file
·187 lines (161 loc) · 4.49 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
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
// Do not mess with the following 6 lines
import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar
plugins {
id 'com.github.johnrengelman.shadow' version '5.1.0'
id 'java'
id 'application'
}
// Change the line below if you change the name of your main Java class
// Comment this line and uncomment the line after it to build/run the Server, and vice versa to run the main vision program
mainClassName = 'ca.team2706.fvts.main.Main'
// Change the line below to change the name of the output jar
def projectName = 'FVTS'
def version = '2.0'
task setbuildType{
doFirst{
if (project.hasProperty('buildType')){
ext.buildType = project.findProperty("buildType")
}else{
println "No build type selected! Exiting!"
println "Options are: windows, arm-raspbian, linux-x86_64, armhf"
throw new GradleException('no build type selected!')
}
}
}
task settestType{
doFirst{
if (project.hasProperty('testType')){
ext.testType = project.findProperty("testType")
}else{
println "No test type selected! Assuming BuildType is the test type!"
if (project.hasProperty('buildType')){
ext.testType = project.findProperty("buildType")
}else{
println "No build type selected! Exiting!"
println "Options are: windows, arm-raspbian, linux-x86_64, armhf"
throw new GradleException('no build type selected!')
}
}
}
}
// Shouldn't need to change anything below this point
apply from: 'dependencies.gradle'
sourceSets {
main {
java {
srcDir 'src/main/java/'
}
}
test {
java{
srcDir 'src/test/java/'
}
}
}
repositories {
mavenCentral()
maven {
url "http://first.wpi.edu/FRC/roborio/maven/release"
}
}
dependencies {
compile ntcoreDep()
compile 'org.opencv:opencv-java:3.1.0'
compile 'edu.wpi.first.cameraserver:cameraserver-java:+:'
compile 'junit:junit:4.12'
compile cscoreDep()
compile group: 'commons-cli', name: 'commons-cli', version: '1.4'
compile 'org.apache.commons:commons-csv:1.7'
compile 'jfree:jfreechart:1.0.13'
testCompile 'junit:junit:4.12'
testCompile tntcoreDep()
testCompile 'org.opencv:opencv-java:3.1.0'
testCompile 'edu.wpi.first.cameraserver:cameraserver-java:+:'
testCompile tcscoreDep()
}
jar {
baseName = projectName
}
shadowJar {
baseName = projectName
}
task libraryJar(type: ShadowJar){
classifier = "lib"
configurations = [ project.configurations.runtime ]
manifest.inheritFrom project.tasks.jar.manifest
exclude('META-INF/INDEX.LIST', 'META-INF/*.SF', 'META-INF/*.DSA', 'META-INF/*.RSA', 'ca/team2706/vision/**/*')
}
distributions {
main {
baseName = projectName
contents {
from (openCvUnzipLocation) {
exclude 'META-INF'
exclude '**/MANIFEST.MF'
into 'bin/'
}
}
}
}
def outputDirectory = file("${rootDir}/output")
task writeExecuteScript() {
dependsOn jar
doLast {
def runFile = new File("${buildDir}/run${projectName}.bat")
runFile.write "java -Djava.library.path=. -jar ${projectName}-all.jar"
def runFile2 = new File("${buildDir}/run${projectName}")
runFile2.write "#!/bin/bash\njava -Djava.library.path=. -jar ${projectName}-all.jar"
}
}
task copyToOutput(type: Copy) {
dependsOn shadowJar
dependsOn unzipOpenCv
dependsOn writeExecuteScript
destinationDir = outputDirectory
from (file(shadowJar.archivePath)) {
}
from (openCvUnzipLocation) {
exclude 'META-INF'
exclude '**/MANIFEST.MF'
}
from (file("${buildDir}/run${projectName}.bat")) {
}
from (file("${buildDir}/run${projectName}")) {
}
}
task zipOutput(type: Zip) {
baseName = projectName
duplicatesStrategy = 'exclude'
dependsOn shadowJar
dependsOn unzipOpenCv
destinationDir = outputDirectory
from (file(shadowJar.archivePath)) {
}
from (openCvUnzipLocation) {
exclude 'META-INF'
exclude '**/MANIFEST.MF'
}
from (file("${buildDir}/run${projectName}.bat")) {
}
from (file("${buildDir}/run${projectName}")) {
fileMode 0777
}
}
tasks.withType(Test) {
systemProperty "java.library.path", "${buildDir}/tests/opencv"
scanForTestClasses = false
include "**/*Test.class"
}
build.dependsOn setbuildType
test.dependsOn settestType
distZip.dependsOn unzipOpenCv
distTar.dependsOn unzipOpenCv
applicationDefaultJvmArgs = ["-Djava.library.path=${openCvUnzipLocation}"]
test.dependsOn tunzipOpenCv
build.dependsOn copyToOutput
build.dependsOn zipOutput
build.dependsOn libraryJar
run.dependsOn unzipOpenCv
clean {
delete outputDirectory
}