blob: 1c043353ec9982d1472ba69ca97e050d7ffe9a83 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF 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.
*/
apply plugin: 'java-library'
description = 'Apache Solr Core'
dependencies {
// Spotbugs Annotations are only needed for old findbugs
// annotation usage like in Zookeeper during compilation time.
// It is not included in the release so exclude from checks.
compileOnly 'com.github.spotbugs:spotbugs-annotations'
testCompileOnly 'com.github.spotbugs:spotbugs-annotations'
permitUnusedDeclared 'com.github.spotbugs:spotbugs-annotations'
// Exclude these from jar validation and license checks.
configurations.jarValidation {
exclude group: "com.github.spotbugs", module: "spotbugs-annotations"
}
implementation 'io.swagger.core.v3:swagger-annotations-jakarta'
// Export these dependencies so that they're imported transitively by
// other modules.
// These Lucene modules are the most significant to Solr
api "org.apache.lucene:lucene-core"
api "org.apache.lucene:lucene-analysis-common"
api "org.apache.lucene:lucene-queries"
// We export logging api with dependencies, which is useful for all modules
api 'org.slf4j:slf4j-api'
api project(':solr:api')
api project(':solr:solrj')
api project(':solr:solrj-zookeeper')
api project(':solr:solrj-streaming')
api 'io.dropwizard.metrics:metrics-core'
implementation ('io.dropwizard.metrics:metrics-graphite', {
exclude group: "com.rabbitmq", module: "amqp-client"
})
implementation 'io.dropwizard.metrics:metrics-jmx'
implementation 'io.dropwizard.metrics:metrics-jvm'
implementation('org.glassfish.jersey.containers:jersey-container-jetty-http', {
exclude group: "org.eclipse.jetty", module: "jetty-continuation"
exclude group: "org.glassfish.hk2.external", module: "jakarta.inject"
})
permitUnusedDeclared 'org.glassfish.jersey.containers:jersey-container-jetty-http'
implementation 'org.glassfish.jersey.inject:jersey-hk2'
permitUnusedDeclared 'org.glassfish.jersey.inject:jersey-hk2'
implementation ('org.glassfish.jersey.media:jersey-media-json-jackson', {
exclude group: "jakarta.xml.bind", module: "jakarta.xml.bind-api"
})
permitUnusedDeclared 'org.glassfish.jersey.media:jersey-media-json-jackson'
implementation 'org.glassfish.jersey.core:jersey-common'
implementation 'org.glassfish.jersey.core:jersey-server'
implementation 'org.glassfish.hk2:hk2-api'
implementation 'jakarta.inject:jakarta.inject-api'
implementation 'jakarta.ws.rs:jakarta.ws.rs-api'
implementation 'jakarta.annotation:jakarta.annotation-api'
// Non-API below; although there are exceptions
runtimeOnly "org.apache.lucene:lucene-analysis-kuromoji"
runtimeOnly "org.apache.lucene:lucene-analysis-nori"
runtimeOnly "org.apache.lucene:lucene-analysis-phonetic"
runtimeOnly "org.apache.lucene:lucene-backward-codecs"
implementation "org.apache.lucene:lucene-codecs"
implementation "org.apache.lucene:lucene-backward-codecs"
permitUnusedDeclared "org.apache.lucene:lucene-backward-codecs"
implementation "org.apache.lucene:lucene-classification"
implementation "org.apache.lucene:lucene-expressions"
implementation "org.apache.lucene:lucene-grouping"
implementation "org.apache.lucene:lucene-highlighter"
implementation "org.apache.lucene:lucene-join"
implementation "org.apache.lucene:lucene-misc"
implementation "org.apache.lucene:lucene-queryparser"
implementation "org.apache.lucene:lucene-spatial-extras"
implementation "org.apache.lucene:lucene-suggest"
// Collections & lang utilities
implementation 'com.google.guava:guava'
implementation 'org.apache.commons:commons-lang3'
implementation 'org.apache.commons:commons-math3'
implementation 'commons-io:commons-io'
implementation 'com.carrotsearch:hppc'
implementation('com.github.ben-manes.caffeine:caffeine') { transitive = false }
implementation 'commons-codec:commons-codec'
implementation 'commons-cli:commons-cli'
implementation 'org.locationtech.spatial4j:spatial4j'
implementation 'com.fasterxml.jackson.core:jackson-annotations'
implementation 'com.fasterxml.jackson.core:jackson-core'
implementation 'com.fasterxml.jackson.core:jackson-databind'
implementation 'com.fasterxml.jackson.dataformat:jackson-dataformat-smile'
implementation 'com.fasterxml.jackson.dataformat:jackson-dataformat-cbor'
implementation 'org.apache.httpcomponents:httpclient'
implementation 'org.apache.httpcomponents:httpcore'
implementation 'org.eclipse.jetty:jetty-client'
implementation 'org.eclipse.jetty:jetty-http'
implementation 'org.eclipse.jetty:jetty-io'
implementation 'org.eclipse.jetty.toolchain:jetty-servlet-api'
// ZooKeeper
implementation('org.apache.zookeeper:zookeeper', {
exclude group: "org.apache.yetus", module: "audience-annotations"
})
implementation('org.apache.zookeeper:zookeeper-jute') {
exclude group: 'org.apache.yetus', module: 'audience-annotations'
}
testImplementation 'org.apache.zookeeper:zookeeper::tests'
// required for instantiating a Zookeeper server (for embedding ZK or running tests)
runtimeOnly ('org.xerial.snappy:snappy-java')
implementation('com.jayway.jsonpath:json-path', {
exclude group: "net.minidev", module: "json-smart"
})
// StatsComponents percentiles
implementation 'com.tdunning:t-digest'
// Distributed Tracing
api 'io.opentelemetry:opentelemetry-api' // Tracer is exposed on some methods
implementation 'io.opentelemetry:opentelemetry-context'
implementation 'org.apache.commons:commons-exec'
implementation 'org.apache.logging.log4j:log4j-api'
implementation 'org.apache.logging.log4j:log4j-core'
runtimeOnly 'org.apache.logging.log4j:log4j-slf4j2-impl'
// For faster XML processing than the JDK
implementation 'org.codehaus.woodstox:stax2-api'
implementation 'com.fasterxml.woodstox:woodstox-core'
// See https://issues.apache.org/jira/browse/LOG4J2-3609 due to needing these annotations
compileOnly 'biz.aQute.bnd:biz.aQute.bnd.annotation'
compileOnly 'org.osgi:osgi.annotation'
compileOnly 'com.github.stephenc.jcip:jcip-annotations'
implementation 'com.j256.simplemagic:simplemagic'
// -- Test Dependencies
testRuntimeOnly 'org.slf4j:jcl-over-slf4j'
testRuntimeOnly "org.apache.lucene:lucene-analysis-icu"
testRuntimeOnly project(':solr:modules:analysis-extras')
testImplementation project(':solr:core')
testImplementation project(':solr:test-framework')
testImplementation 'org.apache.lucene:lucene-test-framework'
testImplementation 'org.eclipse.jetty:jetty-server'
testImplementation 'org.eclipse.jetty:jetty-servlet'
testImplementation 'com.carrotsearch.randomizedtesting:randomizedtesting-runner'
testImplementation 'junit:junit'
testImplementation 'org.hamcrest:hamcrest'
testImplementation('org.mockito:mockito-core', {
exclude group: "net.bytebuddy", module: "byte-buddy-agent"
})
testRuntimeOnly('org.mockito:mockito-subclass', {
exclude group: "net.bytebuddy", module: "byte-buddy-agent"
})
}