[ 
https://issues.apache.org/jira/browse/TIKA-4534?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Christopher Lambert updated TIKA-4534:
--------------------------------------
    Description: 
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: 
{code:java}
<dependencyManagement>
  <dependencies>
    (...)
    <dependency>
      <groupId>org.apache.tika</groupId>
      <artifactId>tika-bom</artifactId>
      <version>3.2.3</version>
      <type>pom</type>
      <scope>import</scope>
    </dependency>
  </dependencies>
</dependencyManagement>{code}
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.??

  was:
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.??


> 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
>            Priority: Major
>
> 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: 
> {code:java}
> <dependencyManagement>
>   <dependencies>
>     (...)
>     <dependency>
>       <groupId>org.apache.tika</groupId>
>       <artifactId>tika-bom</artifactId>
>       <version>3.2.3</version>
>       <type>pom</type>
>       <scope>import</scope>
>     </dependency>
>   </dependencies>
> </dependencyManagement>{code}
> 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)

Reply via email to