-
Notifications
You must be signed in to change notification settings - Fork 8
Expand file tree
/
Copy pathbuild.gradle
More file actions
128 lines (104 loc) · 2.72 KB
/
build.gradle
File metadata and controls
128 lines (104 loc) · 2.72 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
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
plugins {
id 'java'
id 'war'
}
group = 'gov.fnal'
version = '4.0'
// Set java version for compilation compatibility
// sourceCompatibility = '21'
ext {
appName = 'Frontier'
appVersion = '4.0'
catalinaHome = System.getenv('CATALINA_HOME') ?: '/path/to/tomcat'
}
repositories {
mavenCentral()
}
configurations.all {
// exclude group: 'jakarta.annotation', module: 'jakarta.annotation-api'
}
dependencies {
// Oracle JDBC driver (include in WAR)
implementation 'com.oracle.database.jdbc:ojdbc11:21.11.0.0' // Explicit version
// Jakarta Servlet API (Tomcat 11 uses Jakarta EE 10)
compileOnly 'jakarta.servlet:jakarta.servlet-api:6.0.0'
testImplementation 'junit:junit:4.13.2'
}
sourceSets {
main {
java {
srcDirs = ['src']
}
}
test {
java {
srcDirs = ['test']
}
}
}
// Define reusable paths using layout API
def distDir = layout.buildDirectory.dir('dist')
def webDir = layout.buildDirectory.dir('web')
def testDataDir = layout.buildDirectory.dir('test/data')
def testReportsDir = layout.buildDirectory.dir('test/reports')
war {
duplicatesStrategy = DuplicatesStrategy.EXCLUDE // or WARN, INCLUDE, FAIL
archiveBaseName = appName
archiveVersion = ''
destinationDirectory = distDir
webAppDirectory = file('web')
from configurations.runtimeClasspath.collect {
it.isDirectory() ? it : zipTree(it)
}
}
tasks.register('prepare', Copy) {
from 'web'
into webDir
}
tasks.register('customClean', Delete) {
delete layout.buildDirectory
}
tasks.register('testinit') {
doLast {
delete testDataDir, testReportsDir
mkdir testDataDir
mkdir testReportsDir
}
}
tasks.register('testcompile', Copy) {
dependsOn 'classes', 'testinit'
from 'src/test'
into layout.buildDirectory.dir('test')
exclude '**/*.java'
}
tasks.test {
useJUnit()
reports {
junitXml {
required = true // ✅ Correct
outputLocation = testDataDir // ✅ Correct
}
html {
required = true // ✅ Correct
outputLocation = testReportsDir // ✅ Correct
}
}
}
tasks.register('dist', Copy) {
dependsOn 'classes'
from 'docs'
into distDir.dir('docs')
doLast {
def warFile = war.archiveFile.get().asFile
warFile.copyTo(distDir.file("${appName}.war").get().asFile)
}
}
tasks.register('localinstall', Copy) {
dependsOn 'dist'
from distDir.file("${appName}.war")
into file("$catalinaHome/webapps")
}
tasks.register('localuninstall', Delete) {
delete file("$catalinaHome/webapps/${appName}.war")
delete file("$catalinaHome/webapps/${appName}")
}