forked from partiql/partiql-lang-kotlin
-
Notifications
You must be signed in to change notification settings - Fork 0
/
build.gradle
133 lines (114 loc) · 4.62 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
/*
* Copyright 2019 Amazon.com, Inc. or its affiliates. All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License").
* You may not use this file except in compliance with the License.
* A copy of the License is located at:
*
* http://aws.amazon.com/apache2.0/
*
* or in the "license" file accompanying this file. This file is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific
* language governing permissions and limitations under the License.
*/
plugins {
id 'org.jetbrains.kotlin.jvm' version '1.4.32' apply false
// https://arturbosch.github.io/detekt/groovydsl.html
id "io.gitlab.arturbosch.detekt" version "1.20.0-RC1" apply false
id 'org.jlleitschuh.gradle.ktlint' version '10.2.1'
}
allprojects {
apply plugin: 'jacoco'
apply plugin: 'org.jlleitschuh.gradle.ktlint'
jacoco {
toolVersion = '0.8.5'
reportsDirectory = file("$buildDir/reports/jacoco/")
}
repositories {
mavenLocal()
mavenCentral()
}
}
subprojects {
group = 'org.partiql'
version = '0.6.1-SNAPSHOT'
}
buildDir = new File(rootProject.projectDir, "gradle-build/" + project.name)
configure(subprojects.findAll { it.name != 'example' }) {
apply plugin: 'io.gitlab.arturbosch.detekt'
detekt {
input = files("src/")
parallel = true // Builds the AST in parallel. Rules are always executed in parallel. Can lead to speedups in larger projects. `false` by default.
debug = false // Adds debug output during task execution. `false` by default.
ignoreFailures = true // If set to `true` the build does not fail when the maxIssues count was reached. Defaults to `false`.
config = files(new File(rootProject.projectDir, "detekt-config.yml").toString())
reports {
html.required.set(true)
txt.required.set(true)
xml.required.set(true)
}
}
}
subprojects {
apply plugin: "org.jetbrains.kotlin.jvm"
tasks.withType(Test) {
maxHeapSize = "4g"
testLogging {
events "failed"
exceptionFormat "full"
}
useJUnitPlatform()
jacocoTestReport {
reports {
html.required.set(true)
html.outputLocation.set(file("${buildDir}/reports/jacoco/html"))
}
afterEvaluate {
classDirectories.setFrom(files(classDirectories.files.collect {
// exclude PIG generated files.
fileTree(dir: it, exclude: ["org/partiql/lang/domains/*.class"])
}))
}
}
// Make the ktlinCheck task run *before* unit tests--faster failure here means we won't need to re-run the
// tests (which can take several minutes) after applying formatting fixes.
dependsOn.add(ktlintCheck)
}
plugins.withId('java', { _ ->
sourceSets {
main.java.srcDirs = ["src"]
main.resources.srcDirs = ["resources"]
test.java.srcDirs = ["test"]
test.resources.srcDirs = ["test-resources"]
}
})
plugins.withId('org.jetbrains.kotlin.jvm', { _ ->
def generatedVersionDir = "${buildDir}/generated-version"
sourceSets {
main.kotlin.srcDirs = ["src"]
test.kotlin.srcDirs = ["test"]
main {
output.dir(generatedVersionDir, builtBy: 'generateVersionAndHashProperties')
}
}
// generates a build properties file with the current PartiQL version and most recent commit hash
task generateVersionAndHashProperties {
doLast {
def propertiesFile = file "$generatedVersionDir/partiql.properties"
propertiesFile.parentFile.mkdirs()
def properties = new Properties()
// get current PartiQL version
properties.setProperty("version", version.toString())
// get most recent short commit hash
def commitHash = new ByteArrayOutputStream()
exec {
commandLine 'git', 'rev-parse', '--short', 'HEAD'
standardOutput = commitHash
}
properties.setProperty("commit", commitHash.toString().trim())
propertiesFile.withWriter { properties.store(it, null) }
}
}
processResources.dependsOn generateVersionAndHashProperties
})
}