Hi,

I've been lurking on the sidelines on your mailinglist since December
watching the final steps of the SOLR 10 release, thank you very much for
all the work and congratulations on the release!!!

While integrating Solr 10.0.0 as a Maven dependency in our project
(DSpace), we discovered that the published POMs for solr-core, solr-solrj,
and solr-api on Maven Central are missing <version> elements for their
Jackson 2 (com.fasterxml.jackson) dependencies.

Affected artifacts:

solr-core:10.0.0 jackson-annotations, jackson-core, jackson-databind,
jackson-dataformat-smile, jackson-dataformat-cbor
solr-solrj:10.0.0 jackson-databind, jackson-annotations, jackson-core
solr-api:10.0.0 jackson-annotations

Impact: Maven marks these POMs as invalid and refuses to resolve any
transitive dependencies from the affected modules. For solr-core, this
means ~50+ transitive dependencies are silently lost (Jersey,
OpenTelemetry, Curator, Lucene modules, HPPC, etc.). Projects that use
solr-core as a test dependency for EmbeddedSolrServer must manually declare
all of these.

  Maven warning:
  [WARNING] The POM for org.apache.solr:solr-core:jar:10.0.0 is invalid,
transitive dependencies
  (if any) will not be available: 5 problems were encountered while
building the effective model
  for org.apache.solr:solr-core:10.0.0
  [ERROR] 'dependencies.dependency.version' for
com.fasterxml.jackson.core:jackson-annotations:jar is missing.
  [ERROR] 'dependencies.dependency.version' for
com.fasterxml.jackson.core:jackson-core:jar is missing.
  [ERROR] 'dependencies.dependency.version' for
com.fasterxml.jackson.core:jackson-databind:jar is missing.
  [ERROR] 'dependencies.dependency.version' for
com.fasterxml.jackson.dataformat:jackson-dataformat-smile:jar is missing.
  [ERROR] 'dependencies.dependency.version' for
com.fasterxml.jackson.dataformat:jackson-dataformat-cbor:jar is missing.

Root cause (likely): Solr 10 uses Gradle for building and uses a Jackson 2
BOM (jackson-bom) for version management. The Gradle maven-publish plugin
generates the POM from the Gradle model, but BOM-managed versions are not
resolved/flattened into the published POM. Since the published POM has no
<parent> element, there is no BOM to fall back on at consumption time.

Workaround: Projects that depend on solr-core (e.g. for testing with
EmbeddedSolrServer) must explicitly declare all dependencies that would
normally come transitively through solr-core. In our case this meant adding
~20 explicit test dependencies to match what solr-core would have provided.

Would it be worth creating a JIRA for this? The fix would likely involve
either adding explicit versions to the Gradle dependency declarations for
Jackson, or configuring the maven-publish plugin to resolve BOM-managed
versions when generating POMs.

Thanks,

Bram Luyten, Atmire

Reply via email to