diff --git a/bom/platform-common/pom.xml b/bom/platform-common/pom.xml new file mode 100644 index 00000000000..ec296bc1dc3 --- /dev/null +++ b/bom/platform-common/pom.xml @@ -0,0 +1,1037 @@ + + + 4.0.0 + + org.hibernate.search + hibernate-search-parent + 8.1.0-SNAPSHOT + ../.. + + + hibernate-search-platform-common-bom + Hibernate Search - Platform BOM common + pom + + + true + + + 7.0.7.Final + 9.0.4 + 2.31.2 + 3.3.0 + 3.0.4.Final + 3.6.1.Final + 1.0.0 + 1.12.0 + 0.10.0 + 2.13.1 + 2.1.1 + 4.0.1 + 2.0.1 + 3.2.0 + 2.0.1 + 4.0.2 + 3.1.0.Final + + + + + + + org.hibernate.search + hibernate-search-util-common + ${project.version} + + + org.hibernate.search + hibernate-search-engine + ${project.version} + + + org.hibernate.search + hibernate-search-backend-elasticsearch + ${project.version} + + + org.hibernate.search + hibernate-search-backend-elasticsearch-aws + ${project.version} + + + org.hibernate.search + hibernate-search-mapper-pojo-base + ${project.version} + + + org.hibernate.search + hibernate-search-mapper-pojo-standalone + ${project.version} + + + org.hibernate.search + hibernate-search-mapper-orm + ${project.version} + + + org.hibernate.search + hibernate-search-v5migrationhelper-engine + ${project.version} + + + org.hibernate.search + hibernate-search-v5migrationhelper-orm + ${project.version} + + + org.hibernate.search + hibernate-search-mapper-orm-jakarta-batch-core + ${project.version} + + + org.hibernate.search + hibernate-search-mapper-orm-jakarta-batch-jberet + ${project.version} + + + org.hibernate.search + hibernate-search-mapper-orm-outbox-polling + ${project.version} + + + org.hibernate.search + hibernate-search-processor + ${project.version} + + + + org.hibernate.search + hibernate-search-mapper-orm-coordination-outbox-polling + ${project.version} + + + org.hibernate.search + hibernate-search-mapper-orm-batch-jsr352-core + ${project.version} + + + org.hibernate.search + hibernate-search-mapper-orm-batch-jsr352-jberet + ${project.version} + + + + + org.hibernate.orm + hibernate-processor + ${version.bom.org.hibernate.orm} + + + org.hibernate.orm + hibernate-jfr + ${version.bom.org.hibernate.orm} + + + org.hibernate.orm + hibernate-core + ${version.bom.org.hibernate.orm} + + + org.hibernate.orm + hibernate-agroal + ${version.bom.org.hibernate.orm} + + + org.hibernate.orm + hibernate-testing + ${version.bom.org.hibernate.orm} + + + org.hibernate.orm + hibernate-spatial + ${version.bom.org.hibernate.orm} + + + org.hibernate.orm + hibernate-envers + ${version.bom.org.hibernate.orm} + + + org.hibernate.orm + hibernate-scan-jandex + ${version.bom.org.hibernate.orm} + + + org.hibernate.orm + hibernate-hikaricp + ${version.bom.org.hibernate.orm} + + + org.hibernate.orm + hibernate-platform + ${version.bom.org.hibernate.orm} + + + org.hibernate.orm + hibernate-vector + ${version.bom.org.hibernate.orm} + + + org.hibernate.orm + hibernate-maven-plugin + ${version.bom.org.hibernate.orm} + + + org.hibernate.orm + hibernate-micrometer + ${version.bom.org.hibernate.orm} + + + org.hibernate.orm + hibernate-jcache + ${version.bom.org.hibernate.orm} + + + org.hibernate.orm + hibernate-c3p0 + ${version.bom.org.hibernate.orm} + + + org.hibernate.orm + hibernate-ant + ${version.bom.org.hibernate.orm} + + + org.hibernate.orm + hibernate-graalvm + ${version.bom.org.hibernate.orm} + + + org.hibernate.orm + hibernate-jpamodelgen + ${version.bom.org.hibernate.orm} + + + org.hibernate.orm + hibernate-community-dialects + ${version.bom.org.hibernate.orm} + + + + + org.elasticsearch.client + elasticsearch-rest-client + ${version.bom.org.elasticsearch.client} + + + org.elasticsearch.client + elasticsearch-rest-client-sniffer + ${version.bom.org.elasticsearch.client} + + + + + + + software.amazon.awssdk + bom + ${version.bom.software.amazon.awssdk} + pom + import + + + + io.smallrye + smallrye-bom + ${version.bom.io.smallrye} + pom + import + + + + + + org.jboss.logging + jboss-logging-annotations + ${version.bom.org.jboss.logging.processor} + + + org.jboss.logging + jboss-logging-processor + ${version.bom.org.jboss.logging.processor} + + + org.jboss.logging + jboss-logging-tools-docs + ${version.bom.org.jboss.logging.processor} + + + org.jboss.logging + jboss-logging + ${version.bom.org.jboss.logging} + + + + org.hibernate.models + hibernate-models-bytebuddy + ${version.bom.org.hibernate.models} + + + org.hibernate.models + hibernate-models-jandex + ${version.bom.org.hibernate.models} + + + org.hibernate.models + hibernate-models + ${version.bom.org.hibernate.models} + + + + org.apache.avro + avro-android + ${version.bom.org.apache.avro} + + + org.apache.avro + avro-compiler + ${version.bom.org.apache.avro} + + + org.apache.avro + avro-grpc + ${version.bom.org.apache.avro} + + + org.apache.avro + avro-idl + ${version.bom.org.apache.avro} + + + org.apache.avro + avro-integration-test + ${version.bom.org.apache.avro} + + + org.apache.avro + avro-ipc-jetty + ${version.bom.org.apache.avro} + + + org.apache.avro + avro-ipc-netty + ${version.bom.org.apache.avro} + + + org.apache.avro + avro-ipc + ${version.bom.org.apache.avro} + + + org.apache.avro + avro-mapred + ${version.bom.org.apache.avro} + + + org.apache.avro + avro-maven-plugin + ${version.bom.org.apache.avro} + + + org.apache.avro + avro-perf + ${version.bom.org.apache.avro} + + + org.apache.avro + avro-protobuf + ${version.bom.org.apache.avro} + + + org.apache.avro + avro-service-archetype + ${version.bom.org.apache.avro} + + + org.apache.avro + avro-test-custom-conversions + ${version.bom.org.apache.avro} + + + org.apache.avro + avro-thrift + ${version.bom.org.apache.avro} + + + org.apache.avro + avro-tools + ${version.bom.org.apache.avro} + + + org.apache.avro + avro-toplevel + ${version.bom.org.apache.avro} + + + org.apache.avro + avro + ${version.bom.org.apache.avro} + + + org.apache.avro + trevni-avro + ${version.bom.org.apache.avro} + + + org.apache.avro + trevni-core + ${version.bom.org.apache.avro} + + + org.apache.avro + trevni-doc + ${version.bom.org.apache.avro} + + + org.apache.avro + trevni-java + ${version.bom.org.apache.avro} + + + + com.carrotsearch + hppc + ${version.bom.com.carrotsearch} + + + + com.google.code.gson + gson + ${version.bom.com.google.code.gson} + + + + jakarta.batch + jakarta.batch-api + ${version.bom.jakarta.batch} + + + jakarta.batch + jakarta.batch.arquillian.extension + ${version.bom.jakarta.batch} + + + jakarta.batch + jakarta.batch.reporting + ${version.bom.jakarta.batch} + + + jakarta.batch + specification + ${version.bom.jakarta.batch} + + + + jakarta.enterprise + jakarta.enterprise.cdi-api + ${version.bom.jakarta.enterprise} + + + jakarta.enterprise + jakarta.enterprise.lang-model + ${version.bom.jakarta.enterprise} + + + + jakarta.inject + jakarta.inject-api + ${version.bom.jakarta.inject} + + + + jakarta.persistence + jakarta.persistence-api + ${version.bom.jakarta.persistence} + + + + jakarta.transaction + jakarta.transaction-api + ${version.bom.jakarta.transaction} + + + + jakarta.xml.bind + jakarta.xml.bind-api + ${version.bom.jakarta.xml.bind} + + + + io.smallrye + smallrye-health-api + ${version.bom.io.smallrye} + + + io.smallrye + smallrye-health-provided-checks + ${version.bom.io.smallrye} + + + io.smallrye + smallrye-health-ui + ${version.bom.io.smallrye} + + + io.smallrye + smallrye-health + ${version.bom.io.smallrye} + + + io.smallrye + smallrye-jwt-build + ${version.bom.io.smallrye} + + + io.smallrye + smallrye-jwt-cdi-extension + ${version.bom.io.smallrye} + + + io.smallrye + smallrye-jwt-common + ${version.bom.io.smallrye} + + + io.smallrye + smallrye-jwt-http-mechanism + ${version.bom.io.smallrye} + + + io.smallrye + smallrye-jwt-jaxrs + ${version.bom.io.smallrye} + + + io.smallrye + smallrye-jwt + ${version.bom.io.smallrye} + + + io.smallrye + smallrye-open-api-core + ${version.bom.io.smallrye} + + + io.smallrye + smallrye-open-api-gradle-plugin + ${version.bom.io.smallrye} + + + io.smallrye + smallrye-open-api-jaxrs + ${version.bom.io.smallrye} + + + io.smallrye + smallrye-open-api-maven-plugin + ${version.bom.io.smallrye} + + + io.smallrye + smallrye-open-api-spring + ${version.bom.io.smallrye} + + + io.smallrye + smallrye-open-api-tools + ${version.bom.io.smallrye} + + + io.smallrye + smallrye-open-api-ui-forms + ${version.bom.io.smallrye} + + + io.smallrye + smallrye-open-api-ui + ${version.bom.io.smallrye} + + + io.smallrye + smallrye-open-api-vertx + ${version.bom.io.smallrye} + + + io.smallrye + smallrye-open-api + ${version.bom.io.smallrye} + + + + org.jberet + jberet-channel-manifest + ${version.bom.org.jberet} + + + org.jberet + jberet-core + ${version.bom.org.jberet} + + + org.jberet + jberet-infinispan-repository + ${version.bom.org.jberet} + + + org.jberet + jberet-job-repositories + ${version.bom.org.jberet} + + + org.jberet + jberet-job-repository-batchlet + ${version.bom.org.jberet} + + + org.jberet + jberet-mongo-repository + ${version.bom.org.jberet} + + + org.jberet + jberet-se + ${version.bom.org.jberet} + + + org.jberet + test-deployment + ${version.bom.org.jberet} + + + + software.amazon.awssdk + archetype-lambda + ${version.bom.software.amazon.awssdk} + + + software.amazon.awssdk + aws-sdk-java + ${version.bom.software.amazon.awssdk} + + + software.amazon.awssdk + bundle-logging-bridge + ${version.bom.software.amazon.awssdk} + + + software.amazon.awssdk + bundle-sdk + ${version.bom.software.amazon.awssdk} + + + software.amazon.awssdk + bundle + ${version.bom.software.amazon.awssdk} + + + software.amazon.awssdk + core + ${version.bom.software.amazon.awssdk} + + + software.amazon.awssdk + crt-core + ${version.bom.software.amazon.awssdk} + + + software.amazon.awssdk + http-clients + ${version.bom.software.amazon.awssdk} + + + software.amazon.awssdk + metric-publishers + ${version.bom.software.amazon.awssdk} + + + software.amazon.awssdk + protocols + ${version.bom.software.amazon.awssdk} + + + software.amazon.awssdk + ruleset-testing-core + ${version.bom.software.amazon.awssdk} + + + software.amazon.awssdk + service-test-utils + ${version.bom.software.amazon.awssdk} + + + software.amazon.awssdk + services-custom + ${version.bom.software.amazon.awssdk} + + + software.amazon.awssdk + services + ${version.bom.software.amazon.awssdk} + + + software.amazon.awssdk + test-utils + ${version.bom.software.amazon.awssdk} + + + software.amazon.awssdk + third-party-slf4j-api + ${version.bom.software.amazon.awssdk} + + + software.amazon.awssdk + third-party + ${version.bom.software.amazon.awssdk} + + + + + + + + org.codehaus.mojo + flatten-maven-plugin + + + bom + + + remove + + interpolate + + + + + org.apache.maven.plugins + maven-enforcer-plugin + + + enforce-custom-bom-rules + + enforce + + verify + + + + + + org.hibernate.search + hibernate-search-backend-lucene-next + + + org.hibernate.search + hibernate-search-backend-lucene + + + + + + + org.hibernate.search + hibernate-search-backend-lucene-next + ${project.version} + + + org.hibernate.search + hibernate-search-backend-lucene + ${project.version} + + + org.jboss.logging + jboss-logging-tools-parent + ${version.bom.org.jboss.logging.processor} + + + com.google.code.gson + gson-parent + ${version.bom.com.google.code.gson} + + + jakarta.batch + jakarta.batch.arquillian.exec-parent + ${version.bom.jakarta.batch} + + + jakarta.batch + batch-api-parent + ${version.bom.jakarta.batch} + + + jakarta.batch + com.ibm.jbatch.tck.ann.proc + ${version.bom.jakarta.batch} + + + jakarta.batch + com.ibm.jbatch.tck.ann + ${version.bom.jakarta.batch} + + + jakarta.batch + com.ibm.jbatch.tck.appbean + ${version.bom.jakarta.batch} + + + jakarta.batch + com.ibm.jbatch.tck.exec + ${version.bom.jakarta.batch} + + + jakarta.batch + com.ibm.jbatch.tck.sigtest.exec + ${version.bom.jakarta.batch} + + + jakarta.batch + com.ibm.jbatch.tck.spi + ${version.bom.jakarta.batch} + + + jakarta.batch + com.ibm.jbatch.tck + ${version.bom.jakarta.batch} + + + jakarta.batch + jakarta.batch.official.tck + ${version.bom.jakarta.batch} + + + jakarta.batch + jakarta.batch.tck.util + ${version.bom.jakarta.batch} + + + jakarta.batch + tck-parent + ${version.bom.jakarta.batch} + + + jakarta.enterprise + cdi-tck-api + ${version.bom.jakarta.enterprise} + + + jakarta.enterprise + cdi-tck-core-impl + ${version.bom.jakarta.enterprise} + + + jakarta.enterprise + cdi-tck-dist-libs + ${version.bom.jakarta.enterprise} + + + jakarta.enterprise + cdi-tck-dist-porting-package + ${version.bom.jakarta.enterprise} + + + jakarta.enterprise + cdi-tck-dist + ${version.bom.jakarta.enterprise} + + + jakarta.enterprise + cdi-tck-ext-lib + ${version.bom.jakarta.enterprise} + + + jakarta.enterprise + cdi-tck-lang-model + ${version.bom.jakarta.enterprise} + + + jakarta.enterprise + cdi-tck-parent + ${version.bom.jakarta.enterprise} + + + jakarta.enterprise + cdi-tck-reference-guide + ${version.bom.jakarta.enterprise} + + + jakarta.enterprise + cdi-tck-web-impl + ${version.bom.jakarta.enterprise} + + + jakarta.enterprise + jakarta.enterprise.cdi-parent + ${version.bom.jakarta.enterprise} + + + jakarta.enterprise + jakarta.enterprise.cdi-spec-doc + ${version.bom.jakarta.enterprise} + + + jakarta.inject + jakarta.inject-tck + ${version.bom.jakarta.inject} + + + jakarta.xml.bind + jakarta.xml.bind-api-parent + ${version.bom.jakarta.xml.bind} + + + io.smallrye + smallrye-jwt-implementation-parent + ${version.bom.io.smallrye} + + + io.smallrye + smallrye-jwt-parent + ${version.bom.io.smallrye} + + + io.smallrye + smallrye-jwt-release + ${version.bom.io.smallrye} + + + io.smallrye + smallrye-open-api-parent + ${version.bom.io.smallrye} + + + io.smallrye + smallrye-open-api-release + ${version.bom.io.smallrye} + + + io.smallrye + smallrye-open-api-ui-parent + ${version.bom.io.smallrye} + + + io.smallrye + smallrye-bom + ${version.bom.io.smallrye} + + + io.smallrye + smallrye-health-experimental-test + ${version.bom.io.smallrye} + + + io.smallrye + smallrye-health-parent + ${version.bom.io.smallrye} + + + io.smallrye + smallrye-health-release + ${version.bom.io.smallrye} + + + io.smallrye + smallrye-health-testsuite-parent + ${version.bom.io.smallrye} + + + org.jberet + jberet-parent + ${version.bom.org.jberet} + + + org.jberet + jberet-se-bom + ${version.bom.org.jberet} + + + software.amazon.awssdk + archetype-app-quickstart + ${version.bom.software.amazon.awssdk} + + + software.amazon.awssdk + archetype-tools + ${version.bom.software.amazon.awssdk} + + + software.amazon.awssdk + archetypes + ${version.bom.software.amazon.awssdk} + + + software.amazon.awssdk + aws-sdk-java-pom + ${version.bom.software.amazon.awssdk} + + + software.amazon.awssdk + bom-internal + ${version.bom.software.amazon.awssdk} + + + software.amazon.awssdk + bom + ${version.bom.software.amazon.awssdk} + + + software.amazon.awssdk + bundle-logging-bridge-binding-test + ${version.bom.software.amazon.awssdk} + + + software.amazon.awssdk + http-client-tests + ${version.bom.software.amazon.awssdk} + + + software.amazon.awssdk + release-scripts + ${version.bom.software.amazon.awssdk} + + + org.apache.avro + avro-parent + ${version.bom.org.apache.avro} + + + org.apache.avro + avro-archetypes-parent + ${version.bom.org.apache.avro} + + + org.apache.avro + avro-codegen-test + ${version.bom.org.apache.avro} + + + + + + + + + + org.hibernate.search + hibernate-search-build-enforcer + ${project.version} + + + + + + diff --git a/bom/platform-next/pom.xml b/bom/platform-next/pom.xml new file mode 100644 index 00000000000..cb1db57db42 --- /dev/null +++ b/bom/platform-next/pom.xml @@ -0,0 +1,283 @@ + + + 4.0.0 + + org.hibernate.search + hibernate-search-parent + 8.1.0-SNAPSHOT + ../.. + + + hibernate-search-platform-next-bom + Hibernate Search - Platform Lucene 10 BOM + pom + + + + false + + + 10.2.2 + 3.0.4.Final + + + + + + org.hibernate.search + hibernate-search-backend-lucene-next + ${project.version} + + + + org.hibernate.search + hibernate-search-platform-common-bom + ${project.version} + pom + import + + + + + org.apache.lucene + lucene-queryparser + ${version.bom.org.apache.lucene} + + + org.apache.lucene + lucene-queries + ${version.bom.org.apache.lucene} + + + org.apache.lucene + lucene-replicator + ${version.bom.org.apache.lucene} + + + org.apache.lucene + lucene-analysis-opennlp + ${version.bom.org.apache.lucene} + + + org.apache.lucene + lucene-analysis-icu + ${version.bom.org.apache.lucene} + + + org.apache.lucene + lucene-suggest + ${version.bom.org.apache.lucene} + + + org.apache.lucene + lucene-benchmark + ${version.bom.org.apache.lucene} + + + org.apache.lucene + lucene-classification + ${version.bom.org.apache.lucene} + + + org.apache.lucene + lucene-misc + ${version.bom.org.apache.lucene} + + + org.apache.lucene + lucene-memory + ${version.bom.org.apache.lucene} + + + org.apache.lucene + lucene-spatial3d + ${version.bom.org.apache.lucene} + + + org.apache.lucene + lucene-grouping + ${version.bom.org.apache.lucene} + + + org.apache.lucene + lucene-analysis-common + ${version.bom.org.apache.lucene} + + + org.apache.lucene + lucene-analysis-phonetic + ${version.bom.org.apache.lucene} + + + org.apache.lucene + lucene-analysis-smartcn + ${version.bom.org.apache.lucene} + + + org.apache.lucene + lucene-analysis-morfologik + ${version.bom.org.apache.lucene} + + + org.apache.lucene + lucene-expressions + ${version.bom.org.apache.lucene} + + + org.apache.lucene + lucene-monitor + ${version.bom.org.apache.lucene} + + + org.apache.lucene + lucene-highlighter + ${version.bom.org.apache.lucene} + + + org.apache.lucene + lucene-join + ${version.bom.org.apache.lucene} + + + org.apache.lucene + lucene-facet + ${version.bom.org.apache.lucene} + + + org.apache.lucene + lucene-analysis-kuromoji + ${version.bom.org.apache.lucene} + + + org.apache.lucene + lucene-test-framework + ${version.bom.org.apache.lucene} + + + org.apache.lucene + lucene-codecs + ${version.bom.org.apache.lucene} + + + org.apache.lucene + lucene-backward-codecs + ${version.bom.org.apache.lucene} + + + org.apache.lucene + lucene-analysis-nori + ${version.bom.org.apache.lucene} + + + org.apache.lucene + lucene-spatial-extras + ${version.bom.org.apache.lucene} + + + org.apache.lucene + lucene-core + ${version.bom.org.apache.lucene} + + + org.apache.lucene + lucene-luke + ${version.bom.org.apache.lucene} + + + org.apache.lucene + lucene-sandbox + ${version.bom.org.apache.lucene} + + + org.apache.lucene + lucene-analysis-stempel + ${version.bom.org.apache.lucene} + + + + + + + + + org.codehaus.mojo + flatten-maven-plugin + + + bom + + + remove + + resolve + + + + + org.apache.maven.plugins + maven-enforcer-plugin + + + enforce-custom-bom-rules + + enforce + + verify + + + + + + org.hibernate.search + hibernate-search-backend-lucene + + + + + + + org.hibernate.search + hibernate-search-backend-lucene-next + ${project.version} + + + + + org.hibernate.search + hibernate-search-backend-lucene + ${project.version} + + + org.apache.lucene + lucene-demo + ${version.bom.org.apache.lucene} + + + org.apache.lucene + lucene-benchmark-jmh + ${version.bom.org.apache.lucene} + + + org.jboss.logging + jboss-logging-tools-parent + ${version.bom.org.jboss.logging.processor} + + + + + + + + + + org.hibernate.search + hibernate-search-build-enforcer + ${project.version} + + + + + + diff --git a/bom/platform/pom.xml b/bom/platform/pom.xml new file mode 100644 index 00000000000..520d27d7fd2 --- /dev/null +++ b/bom/platform/pom.xml @@ -0,0 +1,271 @@ + + + 4.0.0 + + org.hibernate.search + hibernate-search-parent + 8.1.0-SNAPSHOT + ../.. + + + hibernate-search-platform-bom + Hibernate Search - Platform BOM + pom + + + + false + + + 9.12.2 + 3.0.4.Final + + + + + + org.hibernate.search + hibernate-search-backend-lucene + ${project.version} + + + + org.hibernate.search + hibernate-search-platform-common-bom + ${project.version} + pom + import + + + + org.apache.lucene + lucene-queryparser + ${version.bom.org.apache.lucene} + + + org.apache.lucene + lucene-queries + ${version.bom.org.apache.lucene} + + + org.apache.lucene + lucene-replicator + ${version.bom.org.apache.lucene} + + + org.apache.lucene + lucene-analysis-opennlp + ${version.bom.org.apache.lucene} + + + org.apache.lucene + lucene-analysis-icu + ${version.bom.org.apache.lucene} + + + org.apache.lucene + lucene-suggest + ${version.bom.org.apache.lucene} + + + org.apache.lucene + lucene-benchmark + ${version.bom.org.apache.lucene} + + + org.apache.lucene + lucene-classification + ${version.bom.org.apache.lucene} + + + org.apache.lucene + lucene-misc + ${version.bom.org.apache.lucene} + + + org.apache.lucene + lucene-memory + ${version.bom.org.apache.lucene} + + + org.apache.lucene + lucene-spatial3d + ${version.bom.org.apache.lucene} + + + org.apache.lucene + lucene-grouping + ${version.bom.org.apache.lucene} + + + org.apache.lucene + lucene-analysis-common + ${version.bom.org.apache.lucene} + + + org.apache.lucene + lucene-analysis-phonetic + ${version.bom.org.apache.lucene} + + + org.apache.lucene + lucene-analysis-smartcn + ${version.bom.org.apache.lucene} + + + org.apache.lucene + lucene-analysis-morfologik + ${version.bom.org.apache.lucene} + + + org.apache.lucene + lucene-expressions + ${version.bom.org.apache.lucene} + + + org.apache.lucene + lucene-monitor + ${version.bom.org.apache.lucene} + + + org.apache.lucene + lucene-highlighter + ${version.bom.org.apache.lucene} + + + org.apache.lucene + lucene-join + ${version.bom.org.apache.lucene} + + + org.apache.lucene + lucene-facet + ${version.bom.org.apache.lucene} + + + org.apache.lucene + lucene-analysis-kuromoji + ${version.bom.org.apache.lucene} + + + org.apache.lucene + lucene-test-framework + ${version.bom.org.apache.lucene} + + + org.apache.lucene + lucene-codecs + ${version.bom.org.apache.lucene} + + + org.apache.lucene + lucene-backward-codecs + ${version.bom.org.apache.lucene} + + + org.apache.lucene + lucene-analysis-nori + ${version.bom.org.apache.lucene} + + + org.apache.lucene + lucene-spatial-extras + ${version.bom.org.apache.lucene} + + + org.apache.lucene + lucene-core + ${version.bom.org.apache.lucene} + + + org.apache.lucene + lucene-luke + ${version.bom.org.apache.lucene} + + + org.apache.lucene + lucene-sandbox + ${version.bom.org.apache.lucene} + + + org.apache.lucene + lucene-analysis-stempel + ${version.bom.org.apache.lucene} + + + + + + + + org.codehaus.mojo + flatten-maven-plugin + + + bom + + + remove + + resolve + + + + + org.apache.maven.plugins + maven-enforcer-plugin + + + enforce-custom-bom-rules + + enforce + + verify + + + + + + org.hibernate.search + hibernate-search-backend-lucene-next + + + + + + + org.hibernate.search + hibernate-search-backend-lucene + ${project.version} + + + + + org.apache.lucene + lucene-demo + ${version.bom.org.apache.lucene} + + + org.jboss.logging + jboss-logging-tools-parent + ${version.bom.org.jboss.logging.processor} + + + + + + + + + + org.hibernate.search + hibernate-search-build-enforcer + ${project.version} + + + + + + diff --git a/build/enforcer/pom.xml b/build/enforcer/pom.xml index 65c2d64156d..53fcd40573d 100644 --- a/build/enforcer/pom.xml +++ b/build/enforcer/pom.xml @@ -32,6 +32,10 @@ + + com.google.code.gson + gson + org.apache.maven.enforcer enforcer-api diff --git a/build/enforcer/src/main/java/org/hibernate/search/build/enforcer/DependencyManagementIncludesAllGroupIdArtifactsRule.java b/build/enforcer/src/main/java/org/hibernate/search/build/enforcer/DependencyManagementIncludesAllGroupIdArtifactsRule.java new file mode 100644 index 00000000000..3ed7c146a18 --- /dev/null +++ b/build/enforcer/src/main/java/org/hibernate/search/build/enforcer/DependencyManagementIncludesAllGroupIdArtifactsRule.java @@ -0,0 +1,277 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * Copyright Red Hat Inc. and Hibernate Authors + */ +package org.hibernate.search.build.enforcer; + +import static org.hibernate.search.build.enforcer.MavenProjectUtils.isAnyParentPublicParent; +import static org.hibernate.search.build.enforcer.MavenProjectUtils.isAnyParentRelocationParent; +import static org.hibernate.search.build.enforcer.MavenProjectUtils.isProjectDeploySkipped; + +import java.io.IOException; +import java.io.InputStreamReader; +import java.net.URI; +import java.net.URLEncoder; +import java.nio.charset.StandardCharsets; +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import java.util.Locale; +import java.util.Objects; +import java.util.Set; +import java.util.TreeSet; +import java.util.concurrent.TimeUnit; +import java.util.stream.Collectors; + +import javax.inject.Inject; +import javax.inject.Named; + +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import com.google.gson.stream.JsonReader; + +import org.apache.maven.enforcer.rule.api.AbstractEnforcerRule; +import org.apache.maven.enforcer.rule.api.EnforcerRuleException; +import org.apache.maven.execution.MavenSession; +import org.apache.maven.model.Dependency; +import org.apache.maven.project.MavenProject; + +@Named("dependencyManagementIncludesAllGroupIdArtifactsRule") // rule name - must start with lowercase character +public class DependencyManagementIncludesAllGroupIdArtifactsRule extends AbstractEnforcerRule { + /** + * See Maven Central REST API + */ + private static final String BASE_URL_FORMAT = + "https://search.maven.org/solrsearch/select?q=%s&core=gav&start=%d&rows=%d&wt=json"; + private static final int ROWS_PER_PAGE = 100; + private static final int MAX_RETRIES = 5; + private static final int RETRY_DELAY_SECONDS = 2; + private static final String GAV_FORMAT = "%s:%s:%s"; + + + // Inject needed Maven components + @Inject + private MavenSession session; + + /** + * Set of project to scan for dependencies. If empty -- all published project are included. + */ + private Set includedProjects = new HashSet<>(); + + /** + * Set of extra dependencies to include in queries and hence the ones expected in the pom + */ + private Set includedDependencies = new HashSet<>(); + + /** + * set of "found" dependencies that can be ignored. + */ + private Set dependenciesToSkip = new HashSet<>(); + + public void execute() throws EnforcerRuleException { + Set dependencies = session.getCurrentProject() + .getDependencyManagement() + .getDependencies() + .stream() + .map( DependencyManagementIncludesAllGroupIdArtifactsRule::dependencyString ) + .collect( Collectors.toSet() ); + Set skip = dependenciesToSkip.stream() + .map( DependencyManagementIncludesAllGroupIdArtifactsRule::dependencyString ) + .collect( Collectors.toSet() ); + Set include = includedProjects.stream() + .map( DependencyManagementIncludesAllGroupIdArtifactsRule::dependencyString ) + .collect( Collectors.toSet() ); + + Set toQuery = new TreeSet<>(); + for ( MavenProject project : session.getAllProjects() ) { + String projectGav = String.format( + Locale.ROOT, GAV_FORMAT, project.getGroupId(), project.getArtifactId(), + project.getVersion() + ); + if ( !include.isEmpty() && !include.contains( projectGav ) || skip.contains( projectGav ) ) { + continue; + } + boolean publicParent = isAnyParentPublicParent( project ); + boolean relocationParent = isAnyParentRelocationParent( project ); + boolean shouldBePublished = publicParent || relocationParent; + boolean deploySkipped = isProjectDeploySkipped( project ); + if ( shouldBePublished && !deploySkipped ) { + for ( Dependency dependency : project.getDependencies() ) { + if ( "test".equals( dependency.getScope() ) ) { + continue; + } + toQuery.add( new Artifact( dependency.getGroupId(), null, dependency.getVersion() ) ); + } + } + } + + for ( Dependency filter : includedDependencies ) { + toQuery.add( new Artifact( filter.getGroupId(), filter.getVersion(), filter.getArtifactId() ) ); + } + + getLog().info( "Will attempt to resolve the artifacts for the following groups: " + toQuery ); + + final Gson gson = new GsonBuilder().create(); + Set foundArtifacts = new TreeSet<>(); + + for ( Artifact filter : toQuery ) { + StringBuilder queryBuilder = new StringBuilder(); + queryBuilder.append( "g:" ).append( encodeValue( filter.g ) ); + + if ( filter.a != null && !filter.a.trim().isEmpty() ) { + queryBuilder.append( "+AND+a:" ).append( encodeValue( filter.a ) ); + } + if ( filter.v != null && !filter.v.trim().isEmpty() ) { + queryBuilder.append( "+AND+v:" ).append( encodeValue( filter.v ) ); + } + + int start = 0; + do { + String url = String.format( Locale.ROOT, BASE_URL_FORMAT, queryBuilder, start, ROWS_PER_PAGE ); + SearchResponse response = fetch( gson, url ); + foundArtifacts.addAll( response.response.docs ); + if ( response.response.start + response.response.docs.size() >= response.response.numFound ) { + break; + } + start += ROWS_PER_PAGE; + } + while ( true ); + } + + List problems = new ArrayList<>(); + for ( Artifact artifact : foundArtifacts ) { + String toCheck = artifact.formattedString(); + if ( skip.contains( toCheck ) ) { + continue; + } + if ( !dependencies.remove( toCheck ) ) { + // The artifact is NOT in the dependencies + problems.add( "`" + toCheck + "` is missing from the dependency management section" ); + } + } + + if ( !problems.isEmpty() ) { + throw new EnforcerRuleException( String.join( ";\n", problems ) ); + } + } + + private static String dependencyString(Dependency d) { + return String.format( Locale.ROOT, GAV_FORMAT, d.getGroupId(), d.getArtifactId(), d.getVersion() ); + } + + private SearchResponse fetch(Gson gson, String url) throws EnforcerRuleException { + for ( int i = 0; i < MAX_RETRIES; i++ ) { + try ( + var stream = URI.create( url ).toURL().openStream(); var isr = new InputStreamReader( stream ); + var reader = new JsonReader( isr ) + ) { + getLog().info( "Fetching included artifacts from " + url ); + return gson.fromJson( reader, SearchResponse.class ); + } + catch (IOException e) { + getLog().warn( "Fetching artifacts from " + url + " failed Retrying in " + RETRY_DELAY_SECONDS + + "s... (Attempt " + ( i + 1 ) + "/" + ( MAX_RETRIES ) + "): " + e.getMessage() ); + try { + TimeUnit.SECONDS.sleep( RETRY_DELAY_SECONDS ); + } + catch (InterruptedException ie) { + Thread.currentThread().interrupt(); + throw new EnforcerRuleException( ie ); + } + } + } + getLog().warn( "Fetching the artifacts from " + url + " failed after " + ( MAX_RETRIES ) + " attempts." ); + return SearchResponse.empty(); + } + + private String encodeValue(String value) { + return URLEncoder.encode( value, StandardCharsets.UTF_8 ); + } + + private static class Artifact implements Comparable { + String g; + String a; + String v; + + public Artifact(String g, String a, String v) { + this.g = g; + this.a = a; + this.v = v; + } + + public Artifact() { + } + + public String formattedString() { + return String.format( Locale.ROOT, GAV_FORMAT, g, a, v ); + } + + @Override + public boolean equals(Object o) { + if ( o == null || getClass() != o.getClass() ) { + return false; + } + Artifact artifact = (Artifact) o; + return Objects.equals( g, artifact.g ) && Objects.equals( a, artifact.a ) && Objects.equals( v, artifact.v ); + } + + @Override + public int hashCode() { + return Objects.hash( g, a, v ); + } + + @Override + public int compareTo(Artifact o) { + if ( o == null ) { + return 1; + } + return formattedString().compareTo( o.formattedString() ); + } + + @Override + public String toString() { + final StringBuilder sb = new StringBuilder(); + if ( g != null ) { + sb.append( g ); + } + else { + sb.append( "-" ); + } + sb.append( ':' ); + + if ( a != null ) { + sb.append( a ); + } + else { + sb.append( "-" ); + } + sb.append( ':' ); + if ( v != null ) { + sb.append( v ); + } + else { + sb.append( "-" ); + } + return sb.toString(); + } + } + + private static class SearchResponse { + ResponseData response; + + static SearchResponse empty() { + SearchResponse res = new SearchResponse(); + res.response = new ResponseData(); + res.response.numFound = 0; + res.response.start = 0; + res.response.docs = List.of(); + return res; + } + } + + public static class ResponseData { + int numFound; + int start; + List docs; + } +} diff --git a/build/enforcer/src/main/java/org/hibernate/search/build/enforcer/DependencyManagementIncludesAllPublicArtifactsRule.java b/build/enforcer/src/main/java/org/hibernate/search/build/enforcer/DependencyManagementIncludesAllPublicArtifactsRule.java index 6e8a397a428..9606e045a25 100644 --- a/build/enforcer/src/main/java/org/hibernate/search/build/enforcer/DependencyManagementIncludesAllPublicArtifactsRule.java +++ b/build/enforcer/src/main/java/org/hibernate/search/build/enforcer/DependencyManagementIncludesAllPublicArtifactsRule.java @@ -9,6 +9,7 @@ import static org.hibernate.search.build.enforcer.MavenProjectUtils.isProjectDeploySkipped; import java.util.ArrayList; +import java.util.HashSet; import java.util.List; import java.util.Set; import java.util.stream.Collectors; @@ -21,6 +22,7 @@ import org.apache.maven.execution.MavenSession; import org.apache.maven.model.Dependency; import org.apache.maven.project.MavenProject; +import org.apache.maven.project.ProjectDependenciesResolver; @Named("dependencyManagementIncludesAllPublicArtifactsRule") // rule name - must start with lowercase character public class DependencyManagementIncludesAllPublicArtifactsRule extends AbstractEnforcerRule { @@ -28,6 +30,10 @@ public class DependencyManagementIncludesAllPublicArtifactsRule extends Abstract // Inject needed Maven components @Inject private MavenSession session; + @Inject + private ProjectDependenciesResolver projectDependenciesResolver; + + private Set excludes = new HashSet<>(); public void execute() throws EnforcerRuleException { Set dependencies = session.getCurrentProject() @@ -36,10 +42,16 @@ public void execute() throws EnforcerRuleException { .stream() .map( Dependency::getArtifactId ) .collect( Collectors.toSet() ); + Set projectsToSkip = excludes.stream() + .map( Dependency::getArtifactId ) + .collect( Collectors.toSet() ); List problems = new ArrayList<>(); for ( MavenProject project : session.getAllProjects() ) { + if ( projectsToSkip.contains( project.getArtifactId() ) ) { + continue; + } boolean publicParent = isAnyParentPublicParent( project ); boolean relocationParent = isAnyParentRelocationParent( project ); boolean shouldBePublished = publicParent || relocationParent; diff --git a/documentation/src/main/asciidoc/public/reference/_compatibility.adoc b/documentation/src/main/asciidoc/public/reference/_compatibility.adoc index a361d3b714b..b48cfe55998 100644 --- a/documentation/src/main/asciidoc/public/reference/_compatibility.adoc +++ b/documentation/src/main/asciidoc/public/reference/_compatibility.adoc @@ -39,8 +39,35 @@ https://hibernate.org/search/releases/#compatibility-matrix[compatibility matrix The https://hibernate.org/community/compatibility-policy/[compatibility policy] may also be of interest. ==== -[TIP] +[NOTE] +.Elasticsearch licensing ==== +While Elasticsearch up to 7.10 was distributed under the Apache License 2.0, +be aware that Elasticsearch 7.11-8.15 versions are distributed under the Elastic License and the SSPL, +which are https://opensource.org/node/1099[not considered open-source by the Open Source Initiative]. +Starting with Elasticsearch 8.16 the AGPL v3 license was added. +Please refer to https://www.elastic.co/ to learn more on the licensing of Elasticsearch. + +Only the low-level Java REST client, which Hibernate Search depends on, remains open-source. +==== + +[NOTE] +.OpenSearch +==== +While it historically targeted link:{elasticsearchUrl}[Elastic's Elasticsearch distribution], +Hibernate Search is also compatible with link:{openSearchUrl}[OpenSearch] and regularly tested against it; +see <> for more information. + +Every section of this documentation referring to Elasticsearch +is also relevant for the OpenSearch distribution. +==== + +[[compatibility-search-dependencies]] +=== Adding Hibernate Search dependencies to your project + +[[compatibility-search-dependencies-bom]] +==== Hibernate Search BOM + If you get Hibernate Search from Maven, it is recommended to import Hibernate Search BOM as part of your dependency management to keep all its artifact versions aligned: [source, XML, subs="+attributes"] @@ -62,30 +89,60 @@ as part of your dependency management to keep all its artifact versions aligned: ---- -==== -[NOTE] -.Elasticsearch licensing -==== -While Elasticsearch up to 7.10 was distributed under the Apache License 2.0, -be aware that Elasticsearch 7.11-8.15 versions are distributed under the Elastic License and the SSPL, -which are https://opensource.org/node/1099[not considered open-source by the Open Source Initiative]. -Starting with Elasticsearch 8.16 the AGPL v3 license was added. -Please refer to https://www.elastic.co/ to learn more on the licensing of Elasticsearch. +[[compatibility-search-dependencies-platform]] +==== Hibernate Search Platform -Only the low-level Java REST client, which Hibernate Search depends on, remains open-source. -==== +include::../components/_incubating-warning.adoc[] -[NOTE] -.OpenSearch -==== -While it historically targeted link:{elasticsearchUrl}[Elastic's Elasticsearch distribution], -Hibernate Search is also compatible with link:{openSearchUrl}[OpenSearch] and regularly tested against it; -see <> for more information. +Besides the lean BOM file, Hibernate Search also provides several platform POM files that manage +the versions of Hibernate Search artifacts, _and_ their transitive dependencies, _and_ related artifacts that must be aligned. +For example, it brings the management of all other `org.hibernate.orm` artifacts, +beyond the ones required by the <>, or extra Lucene artifacts like +`lucene-suggest` or `lucene-analysis-icu` and others, that can be helpful for more advanced applications. +These platform files will help keep the versions of extra Hibernate ORM/Lucene/Elasticsearch client dependencies +aligned with the versions of artifacts from the same groups that are used by Hibernate Search itself. -Every section of this documentation referring to Elasticsearch -is also relevant for the OpenSearch distribution. -==== +Currently, there are two platform POM files for Hibernate Search: +* `hibernate-search-platform-bom`: use this when in doubt. +* `hibernate-search-platform-next-bom`: use this if you want to use the <> backend. + +To leverage the dependency management provided by these platform files, use the same approach of importing as for +the <> file: + +.Importing the Hibernate Search platform BOM +[source, XML, subs="+attributes"] +---- + + + + + org.hibernate.search + hibernate-search-platform-bom + {hibernateSearchVersion} + pom + import + + + + + + + + + + org.apache.lucene + lucene-suggest + + + +---- [[compatibility-framework]] == [[gettingstarted-framework]] Framework support @@ -183,7 +240,7 @@ or by explicitly listing a dependency with its version that we want to be used: org.hibernate.orm hibernate-platform - ${version.org.hibernate.orm} + {hibernateVersion} pom import diff --git a/engine/src/main/java/org/hibernate/search/engine/search/common/RewriteMethod.java b/engine/src/main/java/org/hibernate/search/engine/search/common/RewriteMethod.java index 1a7d9360eac..58fabe76c94 100644 --- a/engine/src/main/java/org/hibernate/search/engine/search/common/RewriteMethod.java +++ b/engine/src/main/java/org/hibernate/search/engine/search/common/RewriteMethod.java @@ -18,7 +18,7 @@ * For more details on rewrite methods, and in particular which options are allowed, see the backend specific documentation, e.g. * Elasticsearch rewrite parameters page, * OpenSearch query string parameters table - * or Lucene MultiTermQuery. + * or Lucene MultiTermQuery. */ public enum RewriteMethod { diff --git a/pom.xml b/pom.xml index d2b3b2b41aa..880690a7db9 100644 --- a/pom.xml +++ b/pom.xml @@ -158,6 +158,9 @@ bom/public + bom/platform-common + bom/platform + bom/platform-next build/parents/relocation build/parents/build build/enforcer