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
|
||||
|
||||
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 {
|
||||
apply plugin: 'idea'
|
||||
apply plugin: 'eclipse'
|
||||
|
@ -41,6 +25,7 @@ subprojects {
|
|||
}
|
||||
|
||||
}
|
||||
|
||||
<repository>
|
||||
<id>elasticsearch-releases</id>
|
||||
<url>http://maven.elasticsearch.org/releases</url>
|
||||
|
@ -84,7 +69,6 @@ subprojects {
|
|||
// ================= Local Elasticsearch attachment ===============
|
||||
if ('elasticsearch' in attachments) {
|
||||
subprojects {
|
||||
it.ext.projectsPrefix = ':elasticsearch'
|
||||
configurations {
|
||||
all {
|
||||
resolutionStrategy {
|
||||
|
@ -93,6 +77,7 @@ if ('elasticsearch' in attachments) {
|
|||
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.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()
|
||||
}
|
||||
|
||||
subprojects {
|
||||
rootProject.dependencies {
|
||||
runtime project(path)
|
||||
}
|
||||
dependencies {
|
||||
runtime 'org.elasticsearch.gradle:project-attachment-plugin:1.0.0-SNAPSHOT'
|
||||
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
|
||||
}
|
||||
|
||||
print "MARVEL: ${dependencies}"
|
||||
|
||||
dependencies {
|
||||
licensePluginZip project(path: ':license:plugin') // zip
|
||||
provided project(path: ':license:plugin', configuration: 'runtime')
|
||||
provided project(path: ':shield', configuration: 'runtime')
|
||||
licensePluginZip project(path: "${projectsPrefix}:license:plugin") // zip
|
||||
provided project(path: "${projectsPrefix}:license:plugin", configuration: 'runtime')
|
||||
provided project(path: "${projectsPrefix}:shield", configuration: 'runtime')
|
||||
testCompile 'org.elasticsearch:securemock:1.1'
|
||||
testCompile 'com.squareup.okhttp:mockwebserver:2.3.0'
|
||||
}
|
||||
|
|
|
@ -1,25 +1,51 @@
|
|||
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'
|
||||
|
||||
include 'license:core2'
|
||||
project(':license:core2').projectDir = new File(project(':license').projectDir, 'core')
|
||||
String prefix = ''
|
||||
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 {
|
||||
licensePluginZip project(path: ':license:plugin') // zip
|
||||
provided project(path: ':license:plugin', configuration: 'runtime')
|
||||
compile project(':license:plugin-api')
|
||||
licensePluginZip project(path: "${projectsPrefix}:license:plugin") // zip
|
||||
provided project(path: "${projectsPrefix}:license:plugin", configuration: 'runtime')
|
||||
compile project("${projectsPrefix}:license:plugin-api")
|
||||
compile 'dk.brics.automaton:automaton:1.11-8'
|
||||
compile 'com.unboundid:unboundid-ldapsdk:2.3.8'
|
||||
testCompile "org.elasticsearch:test-framework:${version}"
|
||||
|
|
|
@ -12,9 +12,9 @@ configurations {
|
|||
}
|
||||
|
||||
dependencies {
|
||||
licensePluginZip project(path: ':license:plugin') // zip
|
||||
provided project(path: ':license:plugin', configuration: 'runtime')
|
||||
provided project(path: ':shield', configuration: 'runtime')
|
||||
licensePluginZip project(path: "${projectsPrefix}:license:plugin") // zip
|
||||
provided project(path: "${projectsPrefix}:license:plugin", configuration: 'runtime')
|
||||
provided project(path: "${projectsPrefix}:shield", configuration: 'runtime')
|
||||
|
||||
compile 'com.googlecode.owasp-java-html-sanitizer:owasp-java-html-sanitizer:r239'
|
||||
compile 'com.sun.mail:javax.mail:1.5.3'
|
||||
|
|
Loading…
Reference in New Issue