77 lines
3.5 KiB
Groovy
77 lines
3.5 KiB
Groovy
/*
|
|
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
|
* or more contributor license agreements. Licensed under the Elastic License
|
|
* 2.0 and the Server Side Public License, v 1; you may not use this file except
|
|
* in compliance with, at your election, the Elastic License 2.0 or the Server
|
|
* Side Public License, v 1.
|
|
*/
|
|
|
|
plugins {
|
|
id "com.gradle.enterprise" version "3.14.1"
|
|
}
|
|
|
|
// Include all subdirectories as example projects
|
|
rootDir.listFiles().findAll { it.directory && new File(it, 'build.gradle').exists() }.each { subDir ->
|
|
include ":${subDir.name}"
|
|
}
|
|
|
|
gradle.rootProject {
|
|
ext {
|
|
// Fetch Elasticsearch version from outer build
|
|
new File(rootDir.parentFile.parentFile, 'build-tools-internal/version.properties').withInputStream { is ->
|
|
def props = new Properties()
|
|
props.load(is)
|
|
elasticsearchVersion = "${props.get('elasticsearch')}-SNAPSHOT"
|
|
// for example plugins the pluginApiVersion is the same as ES version, but for real plugins it only has to match a major
|
|
pluginApiVersion = "${props.get('elasticsearch')}-SNAPSHOT"
|
|
log4jVersion = props.get('log4j')
|
|
luceneVersion = props.get('lucene')
|
|
}
|
|
}
|
|
}
|
|
|
|
gradle.projectsEvaluated {
|
|
if (gradle.includedBuilds) {
|
|
gradle.allprojects {
|
|
configurations.all {
|
|
resolutionStrategy.dependencySubstitution {
|
|
// When using composite builds we need to tell Gradle to use the project names since we rename the published artifacts
|
|
substitute module('org.elasticsearch:elasticsearch') using module("org.elasticsearch:server:${elasticsearchVersion}")
|
|
substitute module('org.elasticsearch.client:elasticsearch-rest-client') using module("org.elasticsearch.client:rest:${elasticsearchVersion}")
|
|
substitute module('org.elasticsearch.plugin:x-pack-core') using module("org.elasticsearch.plugin:core:${elasticsearchVersion}")
|
|
substitute module('org.elasticsearch.plugin:elasticsearch-scripting-painless-spi') using module("org.elasticsearch.plugin:spi:${elasticsearchVersion}")
|
|
substitute module('org.elasticsearch.distribution.integ-test-zip:elasticsearch') using variant(module("org.elasticsearch.distribution.integ-test-zip:integ-test-zip:${elasticsearchVersion}")) {
|
|
attributes {
|
|
attribute(Attribute.of("composite", Boolean.class), true)
|
|
}
|
|
}
|
|
substitute module('elasticsearch-distribution-snapshot:elasticsearch') using variant(module("org.elasticsearch.distribution.default:${getDefaultDistroProjectName()}:${elasticsearchVersion}")) {
|
|
attributes {
|
|
attribute(Attribute.of("composite", Boolean.class), true)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
/*
|
|
* Determine which :distribution:archives project to use when resolving as part of a composite build.
|
|
* We have to duplicate this somewhat, since the example plugins can't use InternalDistributionDownloadPlugin (this is intentional) which is where
|
|
* that resolution logic lives.
|
|
*/
|
|
static def getDefaultDistroProjectName() {
|
|
String os = System.getProperty("os.name", "")
|
|
boolean isArm = System.getProperty("os.arch", "") == 'aarch64'
|
|
if (os.startsWith("Windows")) {
|
|
return 'windows-zip'
|
|
} else if (os.startsWith("Linux") || os.startsWith("LINUX")) {
|
|
return isArm ? 'linux-aarch64-tar' : 'linux-tar'
|
|
} else if (os.startsWith("Mac")) {
|
|
return isArm ? 'darwin-aarch64-tar' : 'darwin-tar'
|
|
} else {
|
|
throw new GradleException("Unable to determine system platform type.")
|
|
}
|
|
}
|