-
Notifications
You must be signed in to change notification settings - Fork 2k
/
build.gradle
101 lines (89 loc) · 3.09 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
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'
}
// Dependencies
dependencies {
compile project(":h2o-app")
compile project(":h2o-web")
compile project(":h2o-avro-parser")
compile project(":h2o-persist-s3")
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"
}
//
// 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) }
}
// Include licences
shadowJar.dependsOn(project.tasks.getByName('downloadLicenses'))
// Execute always copyJar
shadowJar.finalizedBy copyJar
// Run shadowJar as par of build
jar.finalizedBy shadowJar