Mark Vieira 6ab4645f4e
[7.x] Introduce type-safe and consistent pattern for handling build globals (#48818)
This commit introduces a consistent, and type-safe manner for handling
global build parameters through out our build logic. Primarily this
replaces the existing usages of extra properties with static accessors.
It also introduces and explicit API for initialization and mutation of
any such parameters, as well as better error handling for uninitialized
or eager access of parameter values.

Closes #42042
2019-11-01 11:33:11 -07:00

83 lines
2.9 KiB
Groovy

import org.elasticsearch.gradle.info.BuildParams
/*
* This project is named sql-cli because it is in the "org.elasticsearch.plugin"
* group and it'd be super confusing for it to just be called "cli" there.
* Also, the jar we ultimately want to ship is sql-cli-VERSION.jar which is
* exactly what gradle makes by default when the project is named sql-cli.
*/
apply plugin: 'elasticsearch.build'
apply plugin: 'com.github.johnrengelman.shadow'
/* We don't use the 'application' plugin because it builds a zip and tgz which
* we don't want. */
archivesBaseName = 'elasticsearch-sql-cli'
description = 'Command line interface to Elasticsearch that speaks SQL'
dependencies {
// select just the parts of JLine that are needed
compile "org.jline:jline-terminal:${jlineVersion}"
compile("org.jline:jline-terminal-jna:${jlineVersion}") {
exclude group: "net.java.dev.jna"
}
compile "org.jline:jline-reader:${jlineVersion}"
compile "org.jline:jline-style:${jlineVersion}"
compile xpackProject('plugin:sql:sql-client')
compile xpackProject('plugin:sql:sql-action')
compile project(":libs:elasticsearch-cli")
compile project(':libs:elasticsearch-x-content')
runtime "org.elasticsearch:jna:${versions.jna}"
testCompile project(":test:framework")
}
dependencyLicenses {
mapping from: /elasticsearch-cli.*/, to: 'elasticsearch'
mapping from: /elasticsearch-core.*/, to: 'elasticsearch'
mapping from: /jackson-.*/, to: 'jackson'
mapping from: /lucene-.*/, to: 'lucene'
mapping from: /sql-action.*/, to: 'elasticsearch'
mapping from: /sql-client.*/, to: 'elasticsearch'
mapping from: /jline-.*/, to: 'jline'
ignoreSha 'elasticsearch-cli'
ignoreSha 'elasticsearch-core'
ignoreSha 'elasticsearch'
ignoreSha 'sql-action'
ignoreSha 'sql-client'
}
shadowJar {
manifest {
attributes 'Main-Class': 'org.elasticsearch.xpack.sql.cli.Cli'
}
}
forbiddenApisMain {
//sql does not depend on server, so only jdk signatures should be checked
replaceSignatureFiles 'jdk-signatures'
signaturesFiles += files('src/forbidden/cli-signatures.txt')
}
task runcli {
description = 'Run the CLI and connect to elasticsearch running on 9200'
dependsOn shadowJar
doLast {
List command = ["${BuildParams.runtimeJavaHome}/bin/java"]
if ('true'.equals(System.getProperty('debug', 'false'))) {
command += '-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=8000'
}
command += ['-jar', shadowJar.archivePath.absolutePath]
logger.info("running the cli with: ${command}")
new ProcessBuilder(command)
.redirectOutput(ProcessBuilder.Redirect.INHERIT)
.redirectInput(ProcessBuilder.Redirect.INHERIT)
.redirectError(ProcessBuilder.Redirect.INHERIT)
.start()
.waitFor()
}
}