dweiss commented on PR #14540:
URL: https://github.com/apache/lucene/pull/14540#issuecomment-2823322410
Ok, so here's how to work this out. First, show what's bringing in the
conflicting dependencies, like the message shows:
```
./gradlew :lucene:benchmark:dependencyInsight --dependency
"commons-codec:commons-codec" --configuration "compileClasspath"
...
commons-codec:commons-codec:1.17.1
\--- org.apache.commons:commons-compress:1.27.1
\--- compileClasspath
./gradlew :lucene:analysis:phonetic:dependencyInsight --dependency
"commons-codec:commons-codec" --configuration "compileClasspath"
...
commons-codec:commons-codec:1.17.2
\--- compileClasspath
```
The above means :lucene:benchmark pulls commons-codec as a transitive
dependency and phonetic imports it directly. Previously, palantir's
consistent-versions would try to make all dependencies "consistent" globally -
unfortunately this isn't really working well with larger projects with more
complicated configurations. This "dependency-locking" mechanism that I wrote
and that we use in Lucene attempts to detect such inconsistencies but doesn't
try to fix them. There are a few ways to fix this:
* Add an explicit dependency on commons-codec or on
:lucene:analysis:phonetic to :lucene:benchmark - then gradle will align the
transitive dependency to the requested version. Here is what the dependency
insight looks like after adding a dependency on phonetic:
```
./gradlew :lucene:benchmark:dependencyInsight --dependency
"commons-codec:commons-codec" --configuration "compileClasspath"
...
\--- project :lucene:analysis:phonetic
\--- compileClasspath
commons-codec:commons-codec:1.17.1 -> 1.17.2
\--- org.apache.commons:commons-compress:1.27.1
\--- compileClasspath
```
note the auto-aligned dependency.
* Add gradle's dependency constraint on the version of commons-codec to
benchmarks.
* remove :lucene:benchmark from the set of configurations included in the
dependency lock checks
(this would mean two different versions of commons-codec are used in
different configurations).
I went with the first option because this seems like the simplest one. Note
that the latest version of commons-compress
brings additional dependencies (commons-io and commons-lang3).
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]