Build: Improve behavior and setup for attachment to elasticsearch
Currently, running any task while attached to elasticsearch will also try to run that task in all elasticsearch projects. This change causes x-plugins to be moved into a subproject when attached. It does this by dynamically creating a fake root project, and making this root project think it is attached to the existing attachments, along with x-plugins itself. This also fixes buildSrc so attachment to elasticsearch's buildSrc actually works. Original commit: elastic/x-pack-elasticsearch@da0adf1da5
This commit is contained in:
parent
9fc92950c4
commit
33785e5446
19
build.gradle
19
build.gradle
|
@ -1,21 +1,5 @@
|
||||||
import org.elasticsearch.gradle.ElasticsearchProperties
|
import org.elasticsearch.gradle.ElasticsearchProperties
|
||||||
|
|
||||||
buildscript {
|
|
||||||
repositories {
|
|
||||||
mavenCentral()
|
|
||||||
maven {
|
|
||||||
name 'sonatype-snapshots'
|
|
||||||
url 'http://oss.sonatype.org/content/repositories/snapshots/'
|
|
||||||
}
|
|
||||||
jcenter()
|
|
||||||
}
|
|
||||||
dependencies {
|
|
||||||
classpath 'org.elasticsearch.gradle:build-tools:3.0.0-SNAPSHOT'
|
|
||||||
classpath 'org.elasticsearch.gradle:project-attachment-plugin:1.0.0-SNAPSHOT'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
apply plugin: 'elasticsearch.project-attachment'
|
|
||||||
|
|
||||||
allprojects {
|
allprojects {
|
||||||
apply plugin: 'idea'
|
apply plugin: 'idea'
|
||||||
apply plugin: 'eclipse'
|
apply plugin: 'eclipse'
|
||||||
|
@ -41,6 +25,7 @@ subprojects {
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
<repository>
|
<repository>
|
||||||
<id>elasticsearch-releases</id>
|
<id>elasticsearch-releases</id>
|
||||||
<url>http://maven.elasticsearch.org/releases</url>
|
<url>http://maven.elasticsearch.org/releases</url>
|
||||||
|
@ -84,7 +69,6 @@ subprojects {
|
||||||
// ================= Local Elasticsearch attachment ===============
|
// ================= Local Elasticsearch attachment ===============
|
||||||
if ('elasticsearch' in attachments) {
|
if ('elasticsearch' in attachments) {
|
||||||
subprojects {
|
subprojects {
|
||||||
it.ext.projectsPrefix = ':elasticsearch'
|
|
||||||
configurations {
|
configurations {
|
||||||
all {
|
all {
|
||||||
resolutionStrategy {
|
resolutionStrategy {
|
||||||
|
@ -93,6 +77,7 @@ if ('elasticsearch' in attachments) {
|
||||||
substitute module("org.elasticsearch:elasticsearch:${version}") with project(":elasticsearch:core")
|
substitute module("org.elasticsearch:elasticsearch:${version}") with project(":elasticsearch:core")
|
||||||
substitute module("org.elasticsearch:test-framework:${version}") with project(":elasticsearch:test-framework")
|
substitute module("org.elasticsearch:test-framework:${version}") with project(":elasticsearch:test-framework")
|
||||||
substitute module("org.elasticsearch.distribution.zip:elasticsearch:${version}") with project(":elasticsearch:distribution:zip")
|
substitute module("org.elasticsearch.distribution.zip:elasticsearch:${version}") with project(":elasticsearch:distribution:zip")
|
||||||
|
substitute module("org.elasticsearch.distribution.tar:elasticsearch:${version}") with project(":elasticsearch:distribution:tar")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,9 +22,20 @@ repositories {
|
||||||
jcenter()
|
jcenter()
|
||||||
}
|
}
|
||||||
|
|
||||||
subprojects {
|
dependencies {
|
||||||
rootProject.dependencies {
|
runtime 'org.elasticsearch.gradle:project-attachment-plugin:1.0.0-SNAPSHOT'
|
||||||
runtime project(path)
|
runtime 'org.elasticsearch.gradle:build-tools:3.0.0-SNAPSHOT'
|
||||||
|
}
|
||||||
|
|
||||||
|
if ('elasticsearch' in attachments) {
|
||||||
|
configurations {
|
||||||
|
all {
|
||||||
|
resolutionStrategy {
|
||||||
|
dependencySubstitution {
|
||||||
|
substitute module('org.elasticsearch.gradle:build-tools') with project(':elasticsearch')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -12,10 +12,12 @@ configurations {
|
||||||
licensePluginZip
|
licensePluginZip
|
||||||
}
|
}
|
||||||
|
|
||||||
|
print "MARVEL: ${dependencies}"
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
licensePluginZip project(path: ':license:plugin') // zip
|
licensePluginZip project(path: "${projectsPrefix}:license:plugin") // zip
|
||||||
provided project(path: ':license:plugin', configuration: 'runtime')
|
provided project(path: "${projectsPrefix}:license:plugin", configuration: 'runtime')
|
||||||
provided project(path: ':shield', configuration: 'runtime')
|
provided project(path: "${projectsPrefix}:shield", configuration: 'runtime')
|
||||||
testCompile 'org.elasticsearch:securemock:1.1'
|
testCompile 'org.elasticsearch:securemock:1.1'
|
||||||
testCompile 'com.squareup.okhttp:mockwebserver:2.3.0'
|
testCompile 'com.squareup.okhttp:mockwebserver:2.3.0'
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,25 +1,51 @@
|
||||||
rootProject.name = 'x-plugins'
|
rootProject.name = 'x-plugins'
|
||||||
|
|
||||||
buildscript {
|
|
||||||
repositories {
|
|
||||||
maven {
|
|
||||||
name 'sonatype-snapshots'
|
|
||||||
url 'http://oss.sonatype.org/content/repositories/snapshots/'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
dependencies {
|
|
||||||
classpath 'org.elasticsearch.gradle:project-attachment-plugin:1.0.0-SNAPSHOT'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
apply plugin: 'elasticsearch.project-settings-attachment'
|
apply plugin: 'elasticsearch.project-settings-attachment'
|
||||||
|
|
||||||
include 'license:core2'
|
String prefix = ''
|
||||||
project(':license:core2').projectDir = new File(project(':license').projectDir, 'core')
|
if (rootProject.children.isEmpty() == false) {
|
||||||
|
// we are attached to another project, make a fake root
|
||||||
|
rootProject.name = 'x-plugins and attachments'
|
||||||
|
rootProject.projectDir = new File(settingsDir, 'build/fake-root')
|
||||||
|
if (rootProject.projectDir.exists()) {
|
||||||
|
rootProject.projectDir.delete()
|
||||||
|
}
|
||||||
|
rootProject.projectDir.mkdirs()
|
||||||
|
|
||||||
|
// the fake root's build file just needs to know about attachments
|
||||||
|
File rootBuild = new File(rootProject.projectDir, 'build.gradle')
|
||||||
|
rootBuild.setText('apply plugin: "elasticsearch.project-attachment"', 'UTF-8')
|
||||||
|
String attachPrefix = org.elasticsearch.gradle.attachment.ProjectAttachmentPlugin.ATTACHMENT_PREFIX
|
||||||
|
settingsDir.eachFile { file ->
|
||||||
|
if (file.getName().startsWith(org.elasticsearch.gradle.attachment.ProjectAttachmentPlugin.ATTACHMENT_PREFIX)) {
|
||||||
|
new File(rootProject.projectDir, file.getName()).setText(file.getText('UTF-8'), 'UTF-8')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// add x-plugins as an attachment
|
||||||
|
File xpluginsAttachment = new File(rootProject.projectDir, "${attachPrefix}x-plugins")
|
||||||
|
xpluginsAttachment.setText(settingsDir.getPath(), 'UTF-8')
|
||||||
|
|
||||||
|
// and add x-plugins root project
|
||||||
|
prefix = 'x-plugins:'
|
||||||
|
include 'x-plugins'
|
||||||
|
project(':x-plugins').projectDir = settingsDir
|
||||||
|
}
|
||||||
|
|
||||||
|
String[] projects = [
|
||||||
|
'license:core2',
|
||||||
|
'license:licensor',
|
||||||
|
'license:plugin-api',
|
||||||
|
'license:plugin',
|
||||||
|
'license:found-plugin',
|
||||||
|
'shield',
|
||||||
|
'watcher',
|
||||||
|
'marvel'
|
||||||
|
]
|
||||||
|
if (prefix.isEmpty() == false) {
|
||||||
|
projects = projects.collect { "${prefix}${it}" }
|
||||||
|
}
|
||||||
|
include projects
|
||||||
|
|
||||||
|
project(":${prefix}license:core2").projectDir = new File(project(":${prefix}license").projectDir, 'core')
|
||||||
|
|
||||||
include 'license:licensor'
|
|
||||||
include 'license:plugin-api'
|
|
||||||
include 'license:plugin'
|
|
||||||
include 'license:found-plugin'
|
|
||||||
include 'shield'
|
|
||||||
include 'watcher'
|
|
||||||
include 'marvel'
|
|
||||||
|
|
|
@ -10,9 +10,9 @@ configurations {
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
licensePluginZip project(path: ':license:plugin') // zip
|
licensePluginZip project(path: "${projectsPrefix}:license:plugin") // zip
|
||||||
provided project(path: ':license:plugin', configuration: 'runtime')
|
provided project(path: "${projectsPrefix}:license:plugin", configuration: 'runtime')
|
||||||
compile project(':license:plugin-api')
|
compile project("${projectsPrefix}:license:plugin-api")
|
||||||
compile 'dk.brics.automaton:automaton:1.11-8'
|
compile 'dk.brics.automaton:automaton:1.11-8'
|
||||||
compile 'com.unboundid:unboundid-ldapsdk:2.3.8'
|
compile 'com.unboundid:unboundid-ldapsdk:2.3.8'
|
||||||
testCompile "org.elasticsearch:test-framework:${version}"
|
testCompile "org.elasticsearch:test-framework:${version}"
|
||||||
|
|
|
@ -12,9 +12,9 @@ configurations {
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
licensePluginZip project(path: ':license:plugin') // zip
|
licensePluginZip project(path: "${projectsPrefix}:license:plugin") // zip
|
||||||
provided project(path: ':license:plugin', configuration: 'runtime')
|
provided project(path: "${projectsPrefix}:license:plugin", configuration: 'runtime')
|
||||||
provided project(path: ':shield', configuration: 'runtime')
|
provided project(path: "${projectsPrefix}:shield", configuration: 'runtime')
|
||||||
|
|
||||||
compile 'com.googlecode.owasp-java-html-sanitizer:owasp-java-html-sanitizer:r239'
|
compile 'com.googlecode.owasp-java-html-sanitizer:owasp-java-html-sanitizer:r239'
|
||||||
compile 'com.sun.mail:javax.mail:1.5.3'
|
compile 'com.sun.mail:javax.mail:1.5.3'
|
||||||
|
|
Loading…
Reference in New Issue