mirror of
https://github.com/honeymoose/OpenSearch.git
synced 2025-03-01 16:39:11 +00:00
This commit includes a number of changes to reduce overall build configuration time. These optimizations include: - Removing the usage of the 'nebula.info-scm' plugin. This plugin leverages jgit to load read various pieces of VCS information. This is mostly overkill and we have our own minimal implementation for determining the current commit id. - Removing unnecessary build dependencies such as perforce and jgit now that we don't need them. This reduces our classpath considerably. - Expanding the usage lazy task creation, particularly in our distribution projects. The archives and packages projects create lots of tasks with very complex configuration. Avoiding the creation of these tasks at configuration time gives us a nice boost.
130 lines
4.2 KiB
Groovy
130 lines
4.2 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"
|
|
}
|
|
}
|
|
|
|
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.") }
|
|
}
|
|
}
|
|
|
|
// Applying this stuff, particularly the idea-ext plugin, has a cost so avoid it unless we're running in the IDE
|
|
if (System.getProperty('idea.active') == 'true') {
|
|
apply plugin: org.jetbrains.gradle.ext.IdeaExtPlugin
|
|
|
|
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) }
|
|
}
|
|
}
|
|
}
|
|
|
|
idea {
|
|
project {
|
|
vcs = 'Git'
|
|
jdkName = '13'
|
|
|
|
settings {
|
|
delegateActions {
|
|
delegateBuildRunToGradle = false
|
|
testRunner = 'choose_per_test'
|
|
}
|
|
taskTriggers {
|
|
afterSync tasks.named('configureIdeaGradleJvm')
|
|
}
|
|
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 = '-ea -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)
|
|
}
|
|
}
|