Merge pull request #14952 from rjernst/attach_without_subdir

Rework extra plugins support to be through sibling directories
This commit is contained in:
Ryan Ernst 2015-11-23 15:51:32 -08:00
commit 321606d3aa
5 changed files with 25 additions and 22 deletions

View File

@ -465,9 +465,10 @@ gradle run --debug-jvm
== Building with extra plugins
Additional plugins may be built alongside elasticsearch, where their
dependency on elasticsearch will be substituted with the local elasticsearch
build. To add your plugin, check it out into the extra-plugins directory.
The build will automatically pick it up. You can verify the plugin is
included as part of the build by checking the projects of the build.
build. To add your plugin, create a directory called x-plugins as a sibling
of elasticsearch. Checkout your plugin underneath x-plugins and the build
will automatically pick it up. You can verify the plugin is included as part
of the build by checking the projects of the build.
---------------------------------------------------------------------------
gradle projects

View File

@ -17,10 +17,19 @@
* under the License.
*/
plugins {
id 'groovy'
id 'com.bmuschko.nexus' version '2.3.1'
// we must use buildscript + apply so that an external plugin
// can apply this file, since the plugins directive is not
// supported through file includes
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.bmuschko:gradle-nexus-plugin:2.3.1'
}
}
apply plugin: 'groovy'
apply plugin: 'com.bmuschko.nexus'
// TODO: move common IDE configuration to a common file to include
apply plugin: 'idea'
apply plugin: 'eclipse'

View File

@ -1 +0,0 @@
*/

View File

@ -1,10 +0,0 @@
// This file exists solely for the purpose of allowing a nice error message
// if someone tries running a gradle command from within the extra-plugins dir.
println '''
Gradle commands are not supported from within the extra-plugins dir.
Please run your command either at the root of the elasticsearch checkout
or within a specific extra-plugins project.
'''
throw new GradleException('Cannot run commands in extra-plugins dir')

View File

@ -61,19 +61,23 @@ if (isEclipse) {
*/
void addSubProjects(String path, File dir) {
if (dir.isDirectory() == false) return;
if (dir.name == 'buildSrc') return;
if (new File(dir, 'build.gradle').exists() == false) return;
String projectName = "${path}:${dir.name}"
include projectName
project(projectName).projectDir = dir
for (File subdir : dir.listFiles()) {
addSubProjects(projectName, subdir)
}
}
File extraPlugins = new File(rootProject.projectDir, 'extra-plugins')
for (File extraPluginDir : extraPlugins.listFiles()) {
addSubProjects('', extraPluginDir)
// look for extra plugins for elasticsearch
File xplugins = new File(rootProject.projectDir.parentFile, 'x-plugins')
if (xplugins.exists()) {
include ':x-plugins'
project(':x-plugins').projectDir = xplugins
for (File extraPluginDir : xplugins.listFiles()) {
addSubProjects(':x-plugins', extraPluginDir)
}
}