This message was deleted.
# community-support
s
This message was deleted.
1
c
That’s as expected. Component capabilities are Gradle-only, not consumed by Maven. https://docs.gradle.org/current/userguide/publishing_gradle_module_metadata.html
Nor does Maven publish such metadata for consumption by Gradle.
p
Yeah, I expected Gradle is able to map the <maven.compiler.release> to the Gradle jvm runtime attribute to fail during configuration.
t
That's not how Maven works though.
maven.compiler.release
is just a property that happens to be used as the default value for `maven-compiler-plugin`'s
release
property. But how about that
release
property being configured explicitly? What if a profile overrides the property with another value? (and remember that this could be inherited from parent POMs) What if command-line overrode the property at the time of publishing? How about some post-processing using some other Maven plugin to make the classes actually compatible with JDK 8? (and I didn't even talk about
maven.compiler.target
)
p
Honestly, I don’t use maven and don’t know it. So this is also true for maven itself? If I depend on a library compiled with Java 11, maven fetches the lib, but my build fails only during assembling (or even runtime if I use runtime scope)?
t
Yes
v
You also have to keep in mind, that with Maven the "build recipe" and the "metadata about the published artifact" are mixed up. They are bothin the form of the POM. Some projects just use the "build recipe" POM also as "metadata abou the published artifact", but then you have to ignore the data that is part of the "build recipe" like the properties you mentioned.
With Gradle Module Metadata this is different. The Gradle build scripts ar the "build recipe" and the GMM is exactly the published information abou the published artifact.
p
Thanks for the answers and the interesting link! With this information I don’t understand why people still use Maven in 2023 🤔
v
🤷‍♂️