148 lines
4.7 KiB
Groovy
148 lines
4.7 KiB
Groovy
|
import org.jetbrains.gradle.ext.Remote
|
||
|
import org.jetbrains.gradle.ext.JUnit
|
||
|
|
||
|
buildscript {
|
||
|
repositories {
|
||
|
maven {
|
||
|
url "https://plugins.gradle.org/m2/"
|
||
|
}
|
||
|
}
|
||
|
dependencies {
|
||
|
classpath "gradle.plugin.org.jetbrains.gradle.plugin.idea-ext:gradle-idea-ext:0.7"
|
||
|
}
|
||
|
}
|
||
|
|
||
|
apply plugin: org.jetbrains.gradle.ext.IdeaExtPlugin
|
||
|
|
||
|
allprojects {
|
||
|
apply plugin: 'idea'
|
||
|
|
||
|
tasks.named('idea') {
|
||
|
doFirst { throw new GradleException("Use of the 'idea' task has been deprecated. For details on importing into IntelliJ see CONTRIBUTING.md.") }
|
||
|
}
|
||
|
}
|
||
|
|
||
|
tasks.register('configureIdeaGradleJvm') {
|
||
|
group = 'ide'
|
||
|
description = 'Configures the appropriate JVM for Gradle'
|
||
|
|
||
|
doLast {
|
||
|
modifyXml('.idea/gradle.xml') { xml ->
|
||
|
def gradleSettings = xml.component.find { it.'@name' == 'GradleSettings' }.option[0].GradleProjectSettings
|
||
|
// Remove configured JVM option to force IntelliJ to use the project JDK for Gradle
|
||
|
gradleSettings.option.findAll { it.'@name' == 'gradleJvm' }.each { it.parent().remove(it) }
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
tasks.register('configureIdeaRunConfigs') {
|
||
|
group = 'ide'
|
||
|
description = 'Configures default run configuration settings'
|
||
|
|
||
|
doLast {
|
||
|
modifyXml('.idea/workspace.xml') { xml ->
|
||
|
def runManager = xml.component.find { it.'@name' == 'RunManager' }
|
||
|
if (runManager == null) {
|
||
|
throw new GradleException("IntelliJ 'RunManager' configuration is missing from workspace.xml. You may need to refresh your Gradle project.")
|
||
|
}
|
||
|
|
||
|
def debugConfig = runManager.configuration.find { it.'@name' == 'Debug Elasticsearch' }
|
||
|
// Enable "auto restart" on remote debug run configuration
|
||
|
if (debugConfig.option.any { it.'@name' == 'AUTO_RESTART' && it.'@value' == 'true'} == false) {
|
||
|
def restart = new NodeBuilder().option(name: 'AUTO_RESTART', value: 'true')
|
||
|
debugConfig.append(restart)
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
idea {
|
||
|
project {
|
||
|
vcs = 'Git'
|
||
|
jdkName = '13'
|
||
|
|
||
|
settings {
|
||
|
delegateActions {
|
||
|
delegateBuildRunToGradle = false
|
||
|
testRunner = 'choose_per_test'
|
||
|
}
|
||
|
taskTriggers {
|
||
|
afterSync tasks.named('configureIdeaGradleJvm'), tasks.named('configureIdeaRunConfigs')
|
||
|
}
|
||
|
codeStyle {
|
||
|
java {
|
||
|
classCountToUseImportOnDemand = 999
|
||
|
}
|
||
|
}
|
||
|
encodings {
|
||
|
encoding = 'UTF-8'
|
||
|
}
|
||
|
compiler {
|
||
|
parallelCompilation = true
|
||
|
javac {
|
||
|
generateDeprecationWarnings = false
|
||
|
}
|
||
|
}
|
||
|
runConfigurations {
|
||
|
'Debug Elasticsearch'(Remote) {
|
||
|
mode = 'listen'
|
||
|
host = 'localhost'
|
||
|
port = 5005
|
||
|
}
|
||
|
defaults(JUnit) {
|
||
|
vmParameters = '-Djava.locale.providers=SPI,COMPAT'
|
||
|
}
|
||
|
}
|
||
|
copyright {
|
||
|
useDefault = 'Apache'
|
||
|
scopes = ['x-pack': 'Elastic']
|
||
|
profiles {
|
||
|
Apache {
|
||
|
keyword = 'Licensed to Elasticsearch under one or more contributor'
|
||
|
notice = '''\
|
||
|
Licensed to Elasticsearch under one or more contributor
|
||
|
license agreements. See the NOTICE file distributed with
|
||
|
this work for additional information regarding copyright
|
||
|
ownership. Elasticsearch licenses this file to you under
|
||
|
the Apache License, Version 2.0 (the "License"); you may
|
||
|
not use this file except in compliance with the License.
|
||
|
You may obtain a copy of the License at
|
||
|
|
||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||
|
|
||
|
Unless required by applicable law or agreed to in writing,
|
||
|
software distributed under the License 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.'''.stripIndent()
|
||
|
}
|
||
|
Elastic {
|
||
|
keyword = 'Licensed under the Elastic License'
|
||
|
notice = '''\
|
||
|
Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
||
|
or more contributor license agreements. Licensed under the Elastic License;
|
||
|
you may not use this file except in compliance with the Elastic License.'''.stripIndent()
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Parses a given XML file, applies a set of changes, and writes those changes back to the original file.
|
||
|
*
|
||
|
* @param path Path to existing XML file
|
||
|
* @param action Action to perform on parsed XML document
|
||
|
*/
|
||
|
void modifyXml(Object path, Action<? super Node> action) {
|
||
|
File xmlFile = project.file(path)
|
||
|
Node xml = new XmlParser().parse(xmlFile)
|
||
|
action.execute(xml)
|
||
|
|
||
|
xmlFile.withPrintWriter { writer ->
|
||
|
new XmlNodePrinter(writer).print(xml)
|
||
|
}
|
||
|
}
|