136 lines
4.1 KiB
Groovy
136 lines
4.1 KiB
Groovy
apply plugin: 'elasticsearch.esplugin'
|
|
apply plugin: 'elasticsearch.internal-cluster-test'
|
|
esplugin {
|
|
name 'x-pack-sql'
|
|
description 'The Elasticsearch plugin that powers SQL for Elasticsearch'
|
|
classname 'org.elasticsearch.xpack.sql.plugin.SqlPlugin'
|
|
extendedPlugins = ['x-pack-ql', 'lang-painless']
|
|
}
|
|
|
|
ext {
|
|
// SQL dependency versions
|
|
jlineVersion = "3.14.1"
|
|
antlrVersion = "4.5.3"
|
|
|
|
// SQL test dependency versions
|
|
csvjdbcVersion = "1.0.34"
|
|
h2Version = "1.4.197"
|
|
h2gisVersion = "1.5.0"
|
|
}
|
|
|
|
configurations {
|
|
// Bundles the sql-cli.jar into the distribution
|
|
bin
|
|
}
|
|
|
|
archivesBaseName = 'x-pack-sql'
|
|
|
|
dependencies {
|
|
compileOnly project(path: xpackModule('core'), configuration: 'default')
|
|
compileOnly(project(':modules:lang-painless')) {
|
|
// exclude ASM to not affect featureAware task on Java 10+
|
|
exclude group: "org.ow2.asm"
|
|
}
|
|
api project('sql-action')
|
|
api project(':modules:aggs-matrix-stats')
|
|
api "org.antlr:antlr4-runtime:${antlrVersion}"
|
|
compileOnly project(path: xpackModule('ql'), configuration: 'default')
|
|
testImplementation project(':test:framework')
|
|
testImplementation project(path: xpackModule('core'), configuration: 'testArtifacts')
|
|
testImplementation project(path: xpackModule('security'), configuration: 'testArtifacts')
|
|
testImplementation project(path: xpackModule('ql'), configuration: 'testArtifacts')
|
|
testImplementation project(path: ':modules:reindex')
|
|
testImplementation project(path: ':modules:parent-join')
|
|
testImplementation project(path: ':modules:analysis-common')
|
|
bin(project(path: xpackModule('sql:sql-cli'), configuration: 'shadow'))
|
|
}
|
|
|
|
/* Bundle the sql-cli into the binary files. It should end up
|
|
* in $ES_HOME/bin/x-pack/. This is useful because it is an
|
|
* executable jar that can be moved wherever it is needed.
|
|
*/
|
|
bundlePlugin {
|
|
from(configurations.bin) {
|
|
into 'bin'
|
|
}
|
|
}
|
|
|
|
// add all sub-projects of the qa sub-project
|
|
gradle.projectsEvaluated {
|
|
project.subprojects
|
|
.find { it.path == project.path + ":qa" }
|
|
.subprojects
|
|
.findAll { it.path.startsWith(project.path + ":qa") }
|
|
.each { check.dependsOn it.check }
|
|
}
|
|
|
|
|
|
/**********************************************
|
|
* SQL Parser regeneration *
|
|
**********************************************/
|
|
|
|
configurations {
|
|
regenerate
|
|
}
|
|
|
|
dependencies {
|
|
regenerate "org.antlr:antlr4:${antlrVersion}"
|
|
}
|
|
|
|
String grammarPath = 'src/main/antlr'
|
|
String outputPath = 'src/main/java/org/elasticsearch/xpack/sql/parser'
|
|
|
|
tasks.register("cleanGenerated", Delete) {
|
|
delete fileTree(grammarPath) {
|
|
include '*.tokens'
|
|
}
|
|
delete fileTree(outputPath) {
|
|
include 'SqlBase*.java'
|
|
}
|
|
}
|
|
|
|
tasks.register("regenParser", JavaExec) {
|
|
dependsOn "cleanGenerated"
|
|
main = 'org.antlr.v4.Tool'
|
|
classpath = configurations.regenerate
|
|
systemProperty 'file.encoding', 'UTF-8'
|
|
systemProperty 'user.language', 'en'
|
|
systemProperty 'user.country', 'US'
|
|
systemProperty 'user.variant', ''
|
|
args '-Werror',
|
|
'-package', 'org.elasticsearch.xpack.sql.parser',
|
|
'-listener',
|
|
'-visitor',
|
|
'-o', outputPath,
|
|
"${file(grammarPath)}/SqlBase.g4"
|
|
}
|
|
|
|
tasks.register("regen") {
|
|
dependsOn "regenParser"
|
|
doLast {
|
|
// moves token files to grammar directory for use with IDE's
|
|
ant.move(file: "${outputPath}/SqlBase.tokens", toDir: grammarPath)
|
|
ant.move(file: "${outputPath}/SqlBaseLexer.tokens", toDir: grammarPath)
|
|
// make the generated classes package private
|
|
ant.replaceregexp(match: 'public ((interface|class) \\QSqlBase\\E\\w+)',
|
|
replace: '\\1',
|
|
encoding: 'UTF-8') {
|
|
fileset(dir: outputPath, includes: 'SqlBase*.java')
|
|
}
|
|
// nuke timestamps/filenames in generated files
|
|
ant.replaceregexp(match: '\\Q// Generated from \\E.*',
|
|
replace: '\\/\\/ ANTLR GENERATED CODE: DO NOT EDIT',
|
|
encoding: 'UTF-8') {
|
|
fileset(dir: outputPath, includes: 'SqlBase*.java')
|
|
}
|
|
// remove tabs in antlr generated files
|
|
ant.replaceregexp(match: '\t', flags: 'g', replace: ' ', encoding: 'UTF-8') {
|
|
fileset(dir: outputPath, includes: 'SqlBase*.java')
|
|
}
|
|
// fix line endings
|
|
ant.fixcrlf(srcdir: outputPath, eol: 'lf') {
|
|
patternset(includes: 'SqlBase*.java')
|
|
}
|
|
}
|
|
}
|