>I am a member of a school that teaches that a tool should never
>override user input :)

Franky, I think there should be a specification, and the tool should follow
the specification
rather than try figuring out the intention of the end-user.

The current specification for dependency declaration is as follows:
https://maven.apache.org/pom.html#Dependency_Version_Requirement_Specification

> 1.0: Soft requirement for 1.0. Use 1.0 if no other version appears
earlier in the dependency tree.

Apparently, selectionStrategy=highest skipper=versioned changes the behavior
for "1.0 soft requirement" as "if no other version appears earlier in the
dependency tree" becomes invalid.

That means "selectionStrategy=highest skipper=versioned" should have its
own specified behavior.

>In other words, IF a user has a POM that states dep 1.1 (so is a
> direct dependency)

To my best knowledge, the POM specification says nothing regarding "direct
dependency".

At the same time, there's "[1.0]: Hard requirement for 1.0. Use 1.0 and
only 1.0."
So I would accept if Maven resolves to 1.0 if the user configures
<version>[1.0]</version>,
however I do not see reasons to treat <version>1.0</version> as if it was
"user enforces the exact 1.0 version".

How does the tool distinguish "user intentionally wants to enforce the
version" from "user adds a soft version requirement"?
1.0 is described as a "soft requirement" in the first place.
The specification should go the first, not the tool.

WDYT?

Vladimir

Reply via email to