>Hence, the written spec "Use 1.0 if no other version appears earlier
in the dependency tree" is fine.

It is not fine for "selectionStrategy=highest skipper=versioned"

The specification should provide users with clear ways to interpret the
meanings.
Please suggest what would you spell out exactly.

"if no other version appears earlier in the dependency tree" is wrong since
the version
could be superseded by a version declared somewhere in the sibling.

In other words, the reproducer project has NO "other version
appears earlier in the dependency tree" yet it selects a newer version
instead.

That is why I say the definition should be reworded.

>The beauty is that with this in mind

Consider the test project:
https://github.com/vlsi/mvn-mediation/blob/dd5f3a484634c04fb36da22e931cd51be2a68e6c/lib-a/pom.xml#L21
How could lib-a enforce guava to be 30.1-jre exactly?
Apparently, lib-a is not a root pom, so do you mean "version enforcement"
could be done in a root pom only?

>The beauty is that with this in mind

One more note: the same pom could be both root and non-root depending on
the way you launch Maven.
For instance, in the mvn-mediation project I can execute lib-a both as a
root project, and as a part of the composite.
I don't think it looks beautiful if the meaning of lib-a/pom.xml versions
changes depending on the way I execute it.

>I don't know how Human Interfaces and "modes" came into play

Hey Tamás, I've quoted a book.
Here's a simplified description:
https://en.wikipedia.org/wiki/The_Humane_Interface
>Wikipedia: a mode is a state in which the computer produces a different
output for the same input than it would have if it were another state

Then I quoted the reason I connect "root vs non-root" vs mode:

>Vladimir: If we consider "root POM" to be special, then the same input
(==same POM)
> would have different meaning depending on the state (if the POM is root
or not).

Frankly, I do not see how Arborescence_(graph_theory) explains the benefits
of
having different interpretations for the same <version>1.0</version>
depending if the
version is placed in a root pom or not.

If a user wants to enforce a specific version, it would be way easier to
get it done with [1.0]
or an alternative _explicit_ way.
Then everybody would understand there was explicit intention to enforce the
version.

Vladimir

Reply via email to