/* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one * or more contributor license agreements. Licensed under the Elastic License * 2.0 and the Server Side Public License, v 1; you may not use this file except * in compliance with, at your election, the Elastic License 2.0 or the Server * Side Public License, v 1. */ import org.elasticsearch.gradle.internal.info.BuildParams apply plugin: 'elasticsearch.build' apply plugin: 'elasticsearch.publish' apply plugin: 'elasticsearch.internal-cluster-test' apply plugin: 'elasticsearch.internal-test-artifact' publishing { publications { elastic { artifactId 'elasticsearch' } } } base { archivesName = 'elasticsearch' } dependencies { api project(':libs:elasticsearch-core') api project(':libs:elasticsearch-logging') api project(':libs:elasticsearch-secure-sm') api project(':libs:elasticsearch-x-content') api project(":libs:elasticsearch-geo") api project(":libs:elasticsearch-lz4") api project(":libs:elasticsearch-plugin-api") api project(":libs:elasticsearch-plugin-analysis-api") api project(':libs:elasticsearch-grok') api project(":libs:elasticsearch-tdigest") implementation project(':libs:elasticsearch-plugin-classloader') // no compile dependency by server, but server defines security policy for this codebase so it i> runtimeOnly project(":libs:elasticsearch-preallocate") // lucene api "org.apache.lucene:lucene-core:${versions.lucene}" api "org.apache.lucene:lucene-analysis-common:${versions.lucene}" api "org.apache.lucene:lucene-backward-codecs:${versions.lucene}" api "org.apache.lucene:lucene-grouping:${versions.lucene}" api "org.apache.lucene:lucene-highlighter:${versions.lucene}" api "org.apache.lucene:lucene-join:${versions.lucene}" api "org.apache.lucene:lucene-memory:${versions.lucene}" api "org.apache.lucene:lucene-misc:${versions.lucene}" api "org.apache.lucene:lucene-queries:${versions.lucene}" api "org.apache.lucene:lucene-queryparser:${versions.lucene}" api "org.apache.lucene:lucene-sandbox:${versions.lucene}" api "org.apache.lucene:lucene-suggest:${versions.lucene}" // utilities api project(":libs:elasticsearch-cli") implementation 'com.carrotsearch:hppc:0.8.1' // precentil ranks aggregation api 'org.hdrhistogram:HdrHistogram:2.1.9' // logging api "org.apache.logging.log4j:log4j-api:${versions.log4j}" api "org.apache.logging.log4j:log4j-core:${versions.log4j}" // access to native functions implementation project(':libs:elasticsearch-native') api "net.java.dev.jna:jna:${versions.jna}" api "co.elastic.logging:log4j2-ecs-layout:${versions.ecsLogging}" api "co.elastic.logging:ecs-logging-core:${versions.ecsLogging}" testImplementation(project(":test:framework")) { // tests use the locally compiled version of server exclude group: 'org.elasticsearch', module: 'server' } internalClusterTestImplementation(project(":test:framework")) { exclude group: 'org.elasticsearch', module: 'server' } } spotless { java { targetExclude "src/main/java/org/elasticsearch/index/IndexVersion.java" } } tasks.named("forbiddenPatterns").configure { exclude '**/*.json' exclude '**/*.jmx' exclude '**/*.dic' exclude '**/*.binary' exclude '**/*.st' } tasks.named('forbiddenApisMain').configure { addSignatureFiles 'hppc-signatures' } tasks.named('forbiddenApisTest').configure { addSignatureFiles 'hppc-signatures' } tasks.named('internalClusterTestTestingConventions').configure { baseClass "org.elasticsearch.test.AbstractMultiClustersTestCase" baseClass "org.elasticsearch.test.ESIntegTestCase" baseClass "org.elasticsearch.test.ESSingleNodeTestCase" } File generatedResourcesDir = new File(buildDir, 'generated-resources') def generateModulesList = tasks.register("generateModulesList") { List modules = project(':modules').subprojects.collect { it.name } modules.add('x-pack') File modulesFile = new File(generatedResourcesDir, "modules.txt") inputs.property('modules', modules) outputs.file(modulesFile) doLast { modulesFile.parentFile.mkdirs() modulesFile.setText(modules.join('\n'), 'UTF-8') } } def generatePluginsList = tasks.register("generatePluginsList") { Set plugins = new TreeSet<>(project(':plugins').childProjects.keySet()) plugins.remove('example') File pluginsFile = new File(generatedResourcesDir, 'plugins.txt') inputs.property('plugins', plugins) outputs.file(pluginsFile) doLast { pluginsFile.parentFile.mkdirs() pluginsFile.setText(plugins.join('\n'), 'UTF-8') } } sourceSets.main.output.dir(generatedResourcesDir) sourceSets.main.compiledBy(generateModulesList, generatePluginsList) if (BuildParams.isSnapshotBuild() == false) { tasks.named("test").configure { systemProperty 'es.index_mode_feature_flag_registered', 'true' systemProperty 'es.failure_store_feature_flag_enabled', 'true' } tasks.named("internalClusterTest").configure { systemProperty 'es.index_mode_feature_flag_registered', 'true' systemProperty 'es.failure_store_feature_flag_enabled', 'true' } } tasks.named("test").configure { systemProperty 'es.insecure_network_trace_enabled', 'true' } tasks.named("thirdPartyAudit").configure { ignoreMissingClasses( // from com.fasterxml.jackson.dataformat.yaml.YAMLMapper (jackson-dataformat-yaml) 'com.fasterxml.jackson.databind.ObjectMapper', // from log4j 'com.conversantmedia.util.concurrent.SpinPolicy', 'com.fasterxml.jackson.core.JsonGenerator', 'com.fasterxml.jackson.core.JsonParser', 'com.fasterxml.jackson.core.JsonParser$Feature', 'com.fasterxml.jackson.core.JsonToken', 'com.fasterxml.jackson.core.PrettyPrinter', 'com.fasterxml.jackson.core.type.TypeReference', 'com.fasterxml.jackson.dataformat.yaml.YAMLMapper', 'com.fasterxml.jackson.databind.SerializationFeature', 'com.fasterxml.jackson.annotation.JsonInclude$Include', 'com.fasterxml.jackson.databind.DeserializationContext', 'com.fasterxml.jackson.databind.DeserializationFeature', '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', 'org.fusesource.jansi.Ansi', 'org.fusesource.jansi.AnsiRenderer$Code', '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.SequenceBarrier', 'com.lmax.disruptor.SequenceReportingEventHandler', 'com.lmax.disruptor.TimeoutException', 'com.lmax.disruptor.WaitStrategy', 'com.lmax.disruptor.dsl.Disruptor', 'com.lmax.disruptor.dsl.ProducerType', 'javax.jms.Connection', 'javax.jms.ConnectionFactory', 'javax.jms.Destination', 'javax.jms.JMSException', 'javax.jms.MapMessage', 'javax.jms.Message', 'javax.jms.MessageConsumer', 'javax.jms.MessageProducer', '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.MimeMessage', 'javax.mail.internet.MimeMultipart', 'javax.mail.internet.MimeUtility', '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.Producer', 'org.apache.kafka.clients.producer.RecordMetadata', 'org.codehaus.stax2.XMLStreamWriter2', 'org.jctools.queues.MpscArrayQueue', '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.ServiceReference', 'org.osgi.framework.ServiceRegistration', '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', ) ignoreMissingClasses 'javax.xml.bind.DatatypeConverter' } tasks.named("dependencyLicenses").configure { mapping from: /lucene-.*/, to: 'lucene' mapping from: /log4j-.*/, to: 'log4j' dependencies = project.configurations.runtimeClasspath.fileCollection { it.group.startsWith('org.elasticsearch') == false || // keep the following org.elasticsearch jars in (it.name == 'jna' || it.name == 'securesm') } } tasks.named("licenseHeaders").configure { // Ignore our vendored version of Google Guice excludes << 'org/elasticsearch/common/inject/**/*' // Ignore temporary copies of impending 8.7 Lucene classes excludes << 'org/apache/lucene/search/RegExp87*' excludes << 'org/apache/lucene/search/RegexpQuery87*' } tasks.withType(Checkstyle.class).configureEach { t -> t.getMaxHeapSize().set("2g") }