-
Notifications
You must be signed in to change notification settings - Fork 3
/
build.gradle
142 lines (115 loc) · 3.91 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
apply plugin: 'java'
apply plugin: 'war'
apply plugin: 'idea'
apply plugin: 'groovy'
apply plugin: 'tomcat'
def tomcatVersion = '6.0.29'
// This build script retrieves the tomcat plugin because it is not an "official" gradle plugin
buildscript {
repositories {
add(new org.apache.ivy.plugins.resolver.URLResolver()) {
name = 'GitHub'
addArtifactPattern 'http://cloud.github.com/downloads/[organisation]/[module]/[module]-[revision].[ext]'
}
}
dependencies {
classpath 'bmuschko:gradle-tomcat-plugin:0.9.2'
}
}
// This build script retrieves the cucumber plugin for gradle
buildscript {
apply from: 'https://github.com/samueltbrown/gradle-cucumber-plugin/raw/master/repo/gradle-cucumber-plugin/gradle-cucumber-plugin/0.1/cucumberinit.gradle'
}
sourceCompatibility = 1.6
group = 'com.excella.javacoe.demo'
version = '1.0'
configurations {
jaxb
}
repositories {
mavenCentral()
}
dependencies {
jaxb group: 'com.sun.xml.bind', name: 'jaxb-xjc', version: '2.2.4-1'
groovy 'org.codehaus.groovy:groovy:1.8.5'
compile 'commons-lang:commons-lang:2.6',
'commons-beanutils:commons-beanutils:1.8.3',
'log4j:log4j:1.2.16',
'org.slf4j:slf4j-log4j12:1.6.1',
'commons-logging:commons-logging:1.1.1',
'org.springframework:spring-context:3.1.0.RELEASE',
'org.springframework:spring-context:3.1.0.RELEASE',
'activesoap:jaxb-xercesImpl:1.5',
'xerces:xmlParserAPIs:2.6.2',
'xerces:xercesImpl:2.6.2',
'org.springframework.ws:spring-ws-core:2.0.2.RELEASE'
testCompile 'junit:junit:4.10',
'org.springframework:spring-test:3.1.0.RELEASE',
'info.cukes:cucumber-junit:1.0.7',
'info.cukes:cucumber-groovy:1.0.7',
'com.github.groovy-wslite:groovy-wslite:0.7.0'
tomcat "org.apache.tomcat:catalina:$tomcatVersion",
"org.apache.tomcat:coyote:$tomcatVersion",
"org.apache.tomcat:jasper:$tomcatVersion",
"org.apache.tomcat:dbcp:$tomcatVersion"
cucumberRuntime files("${jar.archivePath}"),
'info.cukes:cucumber-groovy:1.0.11'
}
//Includes JAXB generated classes as a source directory
sourceSets {
main {
java {
srcDirs "${buildDir}/generated-sources"
}
}
}
//Generate JAXB bindings for the XSD used in the web service
task jaxb () {
// output directory
def jaxbTargetDir = file( "${buildDir}/generated-sources" )
// perform actions
doLast {
jaxbTargetDir.mkdirs()
// Ant XJC Task
ant{
taskdef(name: 'xjc', classname: 'com.sun.tools.xjc.XJCTask', classpath: configurations.jaxb.asPath)
xjc(destdir: "${jaxbTargetDir}",
package: 'com.excella.javacoe.demo.jaxb',
binding: 'src/main/resources/jaxb/jaxb-bindings.xml',
extension: true) {
schema(dir:'src/main/resources/xsd', includes: 'schema.xsd')
}
}
}
}
//Prevents java compilation until after we have created our JAXB binding classes
compileJava.dependsOn jaxb
//Cucumber execution
cucumber() {
glueDirs = ['src/test/groovy', 'src/test/resources']
formats = ['json:build/cucumber.json','junit:build/cucumber.xml','pretty']
}
//Set the tomcat options
[tomcatRun, tomcatRunWar]*.contextPath = 'stock-webservice'
[tomcatRun, tomcatRunWar, tomcatStop]*.stopPort = 8081
[tomcatRun, tomcatRunWar, tomcatStop]*.stopKey = 'stopKey'
task acceptanceTests() {
dependsOn assemble
doFirst {
tomcatRunWar.daemon = true
tomcatRunWar.execute()
}
doLast {
tasks.cucumber.execute()
tomcatStop.execute()
}
}
//Clever trick from Kent Beck to remove groovy from the WAR file. Also sets the archive name for the WAR
war {
classpath = classpath - project.configurations.groovy
archiveName = "stock-webservice.${extension}"
}
//Creates the Gradle Wrapper so that gradle installation is not necessary to run this script
task wrapper(type: Wrapper) {
gradleVersion = '1.0'
}