-
Notifications
You must be signed in to change notification settings - Fork 2k
/
build.gradle
151 lines (135 loc) · 5.59 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
apply plugin: 'com.github.johnrengelman.shadow'
apply plugin: 'java'
apply plugin: 'com.github.hierynomus.license'
description = "H2O Application Assembly"
// Exclude unwanted dependencies
configurations {
compile.exclude module: 'junit'
compile.exclude module: 'mockito-all'
compile.exclude module: 'zookeeper'
compile.exclude module: 'javax.mail.glassfish'
compile.exclude module: 'servlet-api'
compile.exclude group: 'org.mortbay.jetty' // exclude the whole group, nothing good in there
}
// Dependencies
dependencies {
compile project(":h2o-app")
runtime project(":${defaultWebserverModule}")
compile project(":h2o-web")
compile project(":h2o-avro-parser")
compile project(":h2o-persist-gcs")
compile project(":h2o-persist-s3")
compile project(":h2o-persist-http")
compile project(":h2o-persist-hdfs")
if (project.hasProperty("doIncludeOrc") && project.doIncludeOrc == "true") {
compile project(":h2o-orc-parser")
}
compile project(":h2o-parquet-parser")
compile "org.slf4j:slf4j-log4j12:1.7.10"
}
jar {
enabled = false
}
//
// Bundle optional modules
// The process is defined by convention. There are two flags:
// - -Pwith${componentName}=true - enables component "componentName" and includes it in assembly
// - -P${componentName}Version=3.14 - overrides default component version
//
for (comp in optionalComponents) {
def compName = comp['name']
def compVersion = comp['version']
def compEnabled = comp['enabled']
def compPropName = "with${compName.capitalize()}"
def compPropVersionName = "${compName}Version"
if (!project.hasProperty(compPropVersionName)) {
project.ext.set(compPropVersionName, compVersion)
}
if (compEnabled || project.hasProperty(compPropName) && project.property(compPropName)) {
logger.lifecycle("== ${project.path}: Using optional component: ${compName}, version ${project.findProperty(compPropVersionName)}")
apply from: "$rootDir/gradle/components/${compName}.gradle"
}
}
shadowJar {
mergeServiceFiles()
classifier = ''
// CDH 5.3.0 provides joda-time v1.6 which is too old, shadow the library instead
if (!project.hasProperty("jacocoCoverage")) {
relocate 'org.joda.time', 'ai.h2o.org.joda.time'
}
exclude 'META-INF/*.DSA'
exclude 'META-INF/*.SF'
exclude 'synchronize.properties'
exclude 'uploader.properties'
exclude 'test.properties'
exclude 'cockpitlite.properties'
exclude 'devpay_products.properties'
manifest {
attributes 'Main-Class': 'water.H2OApp'
}
transform(com.github.jengelman.gradle.plugins.shadow.transformers.IncludeResourceTransformer.class) {
file = file("${buildDir}/reports/license/dependency-license.xml")
resource = "META-INF/license/h2o-depenencies-licenses.xml"
}
}
artifacts {
archives shadowJar
}
//
// Support make infrastructure by copying the resulting assembly into parent
// project build directory
//
def assembly = "main.jar"
def allInOne = "h2o.jar"
task copyJar(type: Copy) {
from ("${project.buildDir}/libs"){
include assembly
}
into "${project.parent.parent.buildDir}"
rename { it.replace(assembly, allInOne) }
}
downloadLicenses {
ext.apacheTwo = license('Apache License, Version 2.0', 'http://opensource.org/licenses/Apache-2.0')
ext.bsd = license('BSD License', 'http://www.opensource.org/licenses/bsd-license.php')
licenses = [
'commons-beanutils:commons-beanutils:1.7.0': apacheTwo,
'asm:asm-parent:3.1': bsd,
'org.codehaus.jettison:jettison:1.1': apacheTwo,
'javax.servlet.jsp:jsp-api:2.1': license('CDDL + GPLv2 with classpath exception', 'https://glassfish.dev.java.net/nonav/public/CDDL+GPL.html'),
'org.apache.zookeeper:zookeeper:3.4.6': apacheTwo
]
aliases = [
(apacheTwo) : ['The Apache Software License, Version 2.0', 'Apache 2', 'Apache License Version 2.0', 'Apache License, Version 2.0', 'Apache License 2.0', license('Apache License', 'http://www.apache.org/licenses/LICENSE-2.0')],
(bsd) : ['BSD', license('New BSD License', 'http://www.opensource.org/licenses/bsd-license.php')]
]
}
task licenseReport(dependsOn: project.tasks.getByName('downloadLicenses')) {
doLast {
def jsonLicensesFile = file("${buildDir}/reports/license/dependency-license.json")
def csvLicensesFile = file("${buildDir}/reports/license/dependency-license.csv")
def licenses = new groovy.json.JsonSlurper().parseText(jsonLicensesFile.text)
csvLicensesFile.withWriter('UTF-8') { w ->
boolean xgboostDefined = false
w.write('"Dependency","File","License Name","License URL"\n')
licenses.dependencies.each { dep ->
dep.licenses.each {
boolean licenseValid = it.name != "No license found"
if (! licenseValid) {
if (dep.name == "asm:asm-parent:3.1") {
// FIXME: manual override, this doesn't work for some reason!
w.write("${dep.name},${dep.file},\"BSD License\",http://www.opensource.org/licenses/bsd-license.php\n")
} else
throw new StopExecutionException("License not found for dependency ${dep.name}. Please define dependency manually.")
}
w.write("${dep.name},${dep.file},\"${it.name}\",${it.url}\n")
}
}
}
}
}
// Include licences
shadowJar.dependsOn(licenseReport)
// Execute always copyJar
shadowJar.finalizedBy copyJar
// Run shadowJar as part of build
jar.finalizedBy shadowJar