/* * 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.opentracing:opentracing-api' // Tracer is exposed on some methods implementation 'io.opentracing:opentracing-noop' implementation 'io.opentracing:opentracing-util' testImplementation 'io.opentracing:opentracing-mock' 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 the PrometheusResponseWriter implementation 'io.prometheus:prometheus-metrics-model:1.1.0' implementation('io.prometheus:prometheus-metrics-exposition-formats:1.1.0', { exclude group: "io.prometheus", module: "prometheus-metrics-shaded-protobuf" exclude group: "io.prometheus", module: "prometheus-metrics-config" }) // 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" }) }