You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Because Paper changed its artifact ID starting with 1.17, normal Gradle version selection cannot tell that the old com.destroystokyo Paper is in fact the same thing as the new io.papermc.paper Paper.
This can result in both old and new artifacts ending up on the compile classpath, and potentially allowing old classes to override new classes.
Describe the solution you'd like.
Gradle provides the ability to publish 'capabilites' as part of the artifact's module metadata. This way Paper can declare that it provides a newer version of the old com.destroystokyo.paper:paper-api artifact
I'm not sure if Gradle will automatically select the newer version here, but at the very least it will convert silent incorrect behavior into a loud error.
status: acceptedDisputed bug is accepted as valid or Feature accepted as desired to be added.
1 participant
Converted from issue
This discussion was converted from issue #7190 on April 28, 2024 17:34.
Heading
Bold
Italic
Quote
Code
Link
Numbered list
Unordered list
Task list
Attach files
Mention
Reference
Menu
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
-
Is your feature request related to a problem?
Because Paper changed its artifact ID starting with 1.17, normal Gradle version selection cannot tell that the old
com.destroystokyo
Paper is in fact the same thing as the newio.papermc.paper
Paper.This can result in both old and new artifacts ending up on the compile classpath, and potentially allowing old classes to override new classes.
Describe the solution you'd like.
Gradle provides the ability to publish 'capabilites' as part of the artifact's module metadata. This way Paper can declare that it provides a newer version of the old
com.destroystokyo.paper:paper-api
artifactSee https://docs.gradle.org/current/userguide/component_capabilities.html#sec:declaring-additional-capabilities-for-a-local-component
I'm not sure if Gradle will automatically select the newer version here, but at the very least it will convert silent incorrect behavior into a loud error.
Perhaps Paperweight could declare a conflict strategy of selecting the highest version, which would at least help users using userdev, example https://docs.gradle.org/current/userguide/dependency_capability_conflict.html#sub:selecting-preferred-capability-provider
Describe alternatives you've considered.
manual exclusions?
Other
No response
Beta Was this translation helpful? Give feedback.
All reactions