This change, besides semantically incorrect, enforces maven style "provide" behavior.
A pre OSGi scenario, moving the kernel and others modules out of OSGi runtime version control.
It is semantically not sound because, "compileOnly" becomes maven's "provide",
while the version used as tag is just a baseline,
that might be aligned, or not, with the indicated releases. (2 factors here)
This requires projects, new or in migration, to use:
- compileOnly 'com.liferay.portal:com.liferay.portal.kernel'
Projects built with "compile", "api" and "implementation" break in runtime.
(no breaking change documentation or reason to enforce compileOnly, breaking the other gradle dependency types).
Seems like we can enable OSGi version control by overwriting the BOM, but what is the point of BOMs with versions if they do not follow the release indicated?
I know some engineers might think it is ok, but why not provide the possibility to use other types, "compile,api,implementation", while also being aligned with the tag used in the BOM?