/* * 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. */ import org.elasticsearch.gradle.plugin.PluginBuildPlugin import org.apache.tools.ant.taskdefs.condition.Os task buildZip(type: Zip) { dependsOn createLogDir, createPluginsDir baseName = 'elasticsearch' with archivesFiles } artifacts { 'default' buildZip archives buildZip } publishing { publications { nebula { artifactId 'elasticsearch' artifact buildZip } /* HUGE HACK: the underlying maven publication library refuses to deploy any attached artifacts * when the packaging type is set to 'pom'. But Sonatype's OSS repositories require source files * for artifacts that are of type 'zip'. We already publish the source and javadoc for Elasticsearch * under the various other subprojects. So here we create another publication using the same * name that has the "real" pom, and rely on the fact that gradle will execute the publish tasks * in alphabetical order. This lets us publish the zip file and even though the pom says the * type is 'pom' instead of 'zip'. We cannot setup a dependency between the tasks because the * publishing tasks are created *extremely* late in the configuration phase, so that we cannot get * ahold of the actual task. Furthermore, this entire hack only exists so we can make publishing to * maven local work, since we publish to maven central externally. */ nebulaRealPom(MavenPublication) { artifactId 'elasticsearch' pom.packaging = 'pom' pom.withXml { XmlProvider xml -> Node root = xml.asNode() root.appendNode('name', 'Elasticsearch') root.appendNode('description', 'A Distributed RESTful Search Engine') root.appendNode('url', PluginBuildPlugin.urlFromOrigin(project.scminfo.origin)) Node scmNode = root.appendNode('scm') scmNode.appendNode('url', project.scminfo.origin) } } } } integTestRunner { if (Os.isFamily(Os.FAMILY_WINDOWS) && System.getProperty('tests.timeoutSuite') == null) { // override the suite timeout to 30 mins for windows, because it has the most inefficient filesystem known to man systemProperty 'tests.timeoutSuite', '1800000!' } } integTest.dependsOn buildZip