Christopher Lambert created TIKA-4534:
-----------------------------------------
Summary: tika-bom is managing versions of non-tika artifacts
Key: TIKA-4534
URL: https://issues.apache.org/jira/browse/TIKA-4534
Project: Tika
Issue Type: Bug
Components: packaging
Affects Versions: 3.2.3
Reporter: Christopher Lambert
in a private multi module maven project i wanted to manage versions of tika
artifacts by importing the {{tika-bom}} of 3.2.3 in the parent pom.xml but
suddenly modules that are not using tika at all no longer compiled.
looking at the dependency tree of those modules, it seems like many dependency
versions suddenly got upgraded unintentionally:
{code:java}
< [INFO] | +- jakarta.ws.rs:jakarta.ws.rs-api:jar:2.1.6:compile
---
> [INFO] | +- jakarta.ws.rs:jakarta.ws.rs-api:jar:3.1.0:compile
42c47
< [INFO] | \- jakarta.xml.bind:jakarta.xml.bind-api:jar:2.3.3:compile
---
> [INFO] | \- jakarta.xml.bind:jakarta.xml.bind-api:jar:4.0.2:compile
96c101
< [INFO] | +- commons-fileupload:commons-fileupload:jar:1.4:test
---
> [INFO] | +- commons-fileupload:commons-fileupload:jar:1.6.0:test {code}
the problem is that the published {{tika-bom}} is referencing {{tika-parent}}
where many other artifacts versions are enforced in the
{{dependencyManagement}} section:
https://repo1.maven.org/maven2/org/apache/tika/tika-bom/3.2.3/tika-bom-3.2.3.pom
https://repo1.maven.org/maven2/org/apache/tika/tika-parent/3.2.3/tika-parent-3.2.3.pom
one can verify this locally by running:
{code:java}
./mvnw help:effective-pom -Dartifact=org.apache.tika:tika-bom:3.2.3
-Doutput=tika-bom.txt{code}
and compare it to like:
{code:java}
./mvnw help:effective-pom -Dartifact=org.slf4j:slf4j-bom:2.0.17
-Doutput=slf4j-bom.txt{code}
where only slf4j artifacts are in the {{dependencyManagement}} section of the
effective pom.
see also [https://jlbp.dev/JLBP-15] which states:
??Unlike the module POMs of a Maven project, the BOM does not inherit from the
parent POM that’s used for building other modules of the library. The reason is
that a parent will have direct (and possibly transitive) dependencies in its
{{<dependencyManagement>}} section to ensure that its build is consistent, but
these dependency versions shouldn’t be imported by consumers who import the
BOM.??
--
This message was sent by Atlassian Jira
(v8.20.10#820010)