/* * 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 com.carrotsearch.gradle.junit4.RandomizedTestingTask import org.elasticsearch.gradle.BuildPlugin apply plugin: 'elasticsearch.build' apply plugin: 'com.bmuschko.nexus' apply plugin: 'nebula.optional-base' apply plugin: 'nebula.maven-base-publish' apply plugin: 'nebula.maven-scm' publishing { publications { nebula { artifactId 'elasticsearch' } } } archivesBaseName = 'elasticsearch' dependencies { // lucene compile "org.apache.lucene:lucene-core:${versions.lucene}" compile "org.apache.lucene:lucene-analyzers-common:${versions.lucene}" compile "org.apache.lucene:lucene-backward-codecs:${versions.lucene}" compile "org.apache.lucene:lucene-grouping:${versions.lucene}" compile "org.apache.lucene:lucene-highlighter:${versions.lucene}" compile "org.apache.lucene:lucene-join:${versions.lucene}" compile "org.apache.lucene:lucene-memory:${versions.lucene}" compile "org.apache.lucene:lucene-misc:${versions.lucene}" compile "org.apache.lucene:lucene-queries:${versions.lucene}" compile "org.apache.lucene:lucene-queryparser:${versions.lucene}" compile "org.apache.lucene:lucene-sandbox:${versions.lucene}" compile "org.apache.lucene:lucene-spatial:${versions.lucene}" compile "org.apache.lucene:lucene-spatial-extras:${versions.lucene}" compile "org.apache.lucene:lucene-spatial3d:${versions.lucene}" compile "org.apache.lucene:lucene-suggest:${versions.lucene}" compile 'org.elasticsearch:securesm:1.1' // utilities compile 'net.sf.jopt-simple:jopt-simple:5.0.2' compile 'com.carrotsearch:hppc:0.7.1' // time handling, remove with java 8 time compile 'joda-time:joda-time:2.9.4' // joda 2.0 moved to using volatile fields for datetime // When updating to a new version, make sure to update our copy of BaseDateTime compile 'org.joda:joda-convert:1.2' // json and yaml compile "org.yaml:snakeyaml:${versions.snakeyaml}" compile "com.fasterxml.jackson.core:jackson-core:${versions.jackson}" compile "com.fasterxml.jackson.dataformat:jackson-dataformat-smile:${versions.jackson}" compile "com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:${versions.jackson}" compile "com.fasterxml.jackson.dataformat:jackson-dataformat-cbor:${versions.jackson}" // percentiles aggregation compile 'com.tdunning:t-digest:3.0' // precentil ranks aggregation compile 'org.hdrhistogram:HdrHistogram:2.1.6' // lucene spatial compile "org.locationtech.spatial4j:spatial4j:${versions.spatial4j}", optional compile "com.vividsolutions:jts:${versions.jts}", optional // logging compile "org.apache.logging.log4j:log4j-api:${versions.log4j}", optional compile "org.apache.logging.log4j:log4j-core:${versions.log4j}", optional // to bridge dependencies that are still on Log4j 1 to Log4j 2 compile "org.apache.logging.log4j:log4j-1.2-api:${versions.log4j}", optional compile "net.java.dev.jna:jna:${versions.jna}" if (isEclipse == false || project.path == ":core-tests") { testCompile("org.elasticsearch.test:framework:${version}") { // tests use the locally compiled version of core exclude group: 'org.elasticsearch', module: 'elasticsearch' } } } if (isEclipse) { // in eclipse the project is under a fake root, we need to change around the source sets sourceSets { if (project.path == ":core") { main.java.srcDirs = ['java'] main.resources.srcDirs = ['resources'] } else { test.java.srcDirs = ['java'] test.resources.srcDirs = ['resources'] } } } compileJava.options.compilerArgs << "-Xlint:-cast,-deprecation,-rawtypes,-try,-unchecked" compileTestJava.options.compilerArgs << "-Xlint:-cast,-deprecation,-rawtypes,-try,-unchecked" forbiddenPatterns { exclude '**/*.json' exclude '**/*.jmx' exclude '**/org/elasticsearch/cluster/routing/shard_routes.txt' } task generateModulesList { List modules = project(':modules').subprojects.collect { it.name } File modulesFile = new File(buildDir, 'generated-resources/modules.txt') processResources.from(modulesFile) inputs.property('modules', modules) outputs.file(modulesFile) doLast { modulesFile.parentFile.mkdirs() modulesFile.setText(modules.join('\n'), 'UTF-8') } } task generatePluginsList { List plugins = project(':plugins').subprojects .findAll { it.name.contains('example') == false } .collect { it.name } File pluginsFile = new File(buildDir, 'generated-resources/plugins.txt') processResources.from(pluginsFile) inputs.property('plugins', plugins) outputs.file(pluginsFile) doLast { pluginsFile.parentFile.mkdirs() pluginsFile.setText(plugins.join('\n'), 'UTF-8') } } processResources { dependsOn generateModulesList, generatePluginsList } thirdPartyAudit.excludes = [ // classes are missing! // from com.fasterxml.jackson.dataformat.yaml.YAMLMapper (jackson-dataformat-yaml) 'com.fasterxml.jackson.databind.ObjectMapper', // from log4j 'com.fasterxml.jackson.annotation.JsonInclude$Include', 'com.fasterxml.jackson.databind.DeserializationContext', 'com.fasterxml.jackson.databind.JsonMappingException', 'com.fasterxml.jackson.databind.JsonNode', 'com.fasterxml.jackson.databind.Module$SetupContext', 'com.fasterxml.jackson.databind.ObjectReader', 'com.fasterxml.jackson.databind.ObjectWriter', 'com.fasterxml.jackson.databind.SerializerProvider', 'com.fasterxml.jackson.databind.deser.std.StdDeserializer', 'com.fasterxml.jackson.databind.deser.std.StdScalarDeserializer', 'com.fasterxml.jackson.databind.module.SimpleModule', 'com.fasterxml.jackson.databind.ser.impl.SimpleBeanPropertyFilter', 'com.fasterxml.jackson.databind.ser.impl.SimpleFilterProvider', 'com.fasterxml.jackson.databind.ser.std.StdScalarSerializer', 'com.fasterxml.jackson.databind.ser.std.StdSerializer', 'com.fasterxml.jackson.dataformat.xml.JacksonXmlModule', 'com.fasterxml.jackson.dataformat.xml.XmlMapper', 'com.fasterxml.jackson.dataformat.xml.util.DefaultXmlPrettyPrinter', 'com.lmax.disruptor.BlockingWaitStrategy', 'com.lmax.disruptor.BusySpinWaitStrategy', 'com.lmax.disruptor.EventFactory', 'com.lmax.disruptor.EventTranslator', 'com.lmax.disruptor.EventTranslatorTwoArg', 'com.lmax.disruptor.EventTranslatorVararg', 'com.lmax.disruptor.ExceptionHandler', 'com.lmax.disruptor.LifecycleAware', 'com.lmax.disruptor.RingBuffer', 'com.lmax.disruptor.Sequence', 'com.lmax.disruptor.SequenceReportingEventHandler', 'com.lmax.disruptor.SleepingWaitStrategy', 'com.lmax.disruptor.TimeoutBlockingWaitStrategy', 'com.lmax.disruptor.WaitStrategy', 'com.lmax.disruptor.YieldingWaitStrategy', 'com.lmax.disruptor.dsl.Disruptor', 'com.lmax.disruptor.dsl.ProducerType', 'javax.jms.Connection', 'javax.jms.ConnectionFactory', 'javax.jms.Destination', 'javax.jms.Message', 'javax.jms.MessageConsumer', 'javax.jms.MessageListener', 'javax.jms.MessageProducer', 'javax.jms.ObjectMessage', 'javax.jms.Session', 'javax.mail.Authenticator', 'javax.mail.Message$RecipientType', 'javax.mail.PasswordAuthentication', 'javax.mail.Session', 'javax.mail.Transport', 'javax.mail.internet.InternetAddress', 'javax.mail.internet.InternetHeaders', 'javax.mail.internet.MimeBodyPart', 'javax.mail.internet.MimeMessage', 'javax.mail.internet.MimeMultipart', 'javax.mail.internet.MimeUtility', 'javax.mail.util.ByteArrayDataSource', 'javax.persistence.AttributeConverter', 'javax.persistence.EntityManager', 'javax.persistence.EntityManagerFactory', 'javax.persistence.EntityTransaction', 'javax.persistence.Persistence', 'javax.persistence.PersistenceException', 'org.apache.commons.compress.compressors.CompressorStreamFactory', 'org.apache.commons.compress.utils.IOUtils', 'org.apache.commons.csv.CSVFormat', 'org.apache.commons.csv.QuoteMode', 'org.apache.kafka.clients.producer.KafkaProducer', 'org.apache.kafka.clients.producer.Producer', 'org.apache.kafka.clients.producer.ProducerRecord', 'org.codehaus.stax2.XMLStreamWriter2', 'org.osgi.framework.AdaptPermission', 'org.osgi.framework.AdminPermission', 'org.osgi.framework.Bundle', 'org.osgi.framework.BundleActivator', 'org.osgi.framework.BundleContext', 'org.osgi.framework.BundleEvent', 'org.osgi.framework.BundleReference', 'org.osgi.framework.FrameworkUtil', 'org.osgi.framework.SynchronousBundleListener', 'org.osgi.framework.wiring.BundleWire', 'org.osgi.framework.wiring.BundleWiring', 'org.zeromq.ZMQ$Context', 'org.zeromq.ZMQ$Socket', 'org.zeromq.ZMQ', // from org.locationtech.spatial4j.io.GeoJSONReader (spatial4j) 'org.noggit.JSONParser', ] // dependency license are currently checked in distribution dependencyLicenses.enabled = false if (isEclipse == false || project.path == ":core-tests") { task integTest(type: RandomizedTestingTask, group: JavaBasePlugin.VERIFICATION_GROUP, description: 'Multi-node tests', dependsOn: test.dependsOn) { configure(BuildPlugin.commonTestConfig(project)) classpath = project.test.classpath testClassesDir = project.test.testClassesDir include '**/*IT.class' } check.dependsOn integTest integTest.mustRunAfter test }