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