JLBP-6 is misleading regarding "don’t publish the same classes under multiple Maven IDs"
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 3/5
- Temps estimé
- 1-2 jours
- Accessibilité débutants
- 48/100
- Type d'issue
- Documentation
- Clarté
- Plutôt claire
- Activité
- Calme
- Stack technique
- java
- Domaine
- build-system, documentation
Piste de recherche
Commencez par lire le texte actuel de JLBP-6 et le reproducer jarsplit associé. Comparez les indications documentées concernant les classes qui se chevauchent avec le comportement de Maven et Gradle décrit dans l’issue, puis révisez JLBP-6 afin que son périmètre et ses limitations soient exacts. C’est terminé lorsque les indications ne présentent plus le problème spécifique à Maven comme étant universel.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
The current text is
Whether or not you make breaking changes, don’t publish the same classes under multiple Maven IDs; this creates a situation where artifacts have “overlapping classes.” Another best practice, JLBP-5, covers how consumers need to handle such problematic scenarios — don’t create new cases!
However, in practice this is a Maven-only flaw.
Gradle can handle diamon dependency resolution automatically, and Gradle does enable publishers to evolve their libraries with backward compatibility in mind.
For example:
commons-compress-1.0.jar: a single jar with all the compressors (gz, tar, zip)commons-compress-1.0.jar: no classes, just a pom artifact for backward compatibility. It would depend on all the othercommons-compress-*-1.1.jarartifactscommons-compress-base-1.1.jar: base interfaces, no compressor codecommons-compress-tar-1.1.jar: only tar-related classescommons-compress-gz-1.1.jar: only gz-related classes
Gradle enables publisher to declare platform constraint (see https://blog.gradle.org/alignment-with-gradle-module-metadata), so the resolver would automatically resolve the diamond.
With Gradle platform in mind, commons-compress-base:1.1 could add platform constraint on commons-compress:1.1.
It will let Gradle know that if it sees commons-compress on the classpath, it should bump it to at least 1.1.
That fixes diamond dependency.
I've published a reproducer project: https://github.com/vlsi/jarsplit
It works fine with Gradle and it fails with Maven, so it highlights that the bug is Maven tool-related only.
- Langage dominant
- Java
- Étoiles
- 163
- Forks
- 81
- Métriques de merge des PR
- Aucune PR mergée en 30 j
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de GoogleCloudPlatform/cloud-opensource-java
-
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
GoogleCloudPlatform/cloud-opensource-java#2419 · 1 commentaire · 2 réactions ·
-
best practices
Difficulté 1/5 Moins d'une heure Accessibilité débutants 62/100
-
Difficulté 3/5 1-2 jours Accessibilité débutants 55/100
-
JLBP-14 additional reason Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 42/100
-
Add a presubmit CI check for LTS Ouverteenhancement p2
GoogleCloudPlatform/cloud-opensource-java#2468 · 1 commentaire · 1 personne assignée ·
Toutes les issues de GoogleCloudPlatform/cloud-opensource-java
Issues similaires
-
documentation
Difficulté 2/5 1-3 heures Accessibilité débutants 65/100
inu-appcenter/memorIN-backend#288 ·
-
Difficulté 2/5 1-3 heures Accessibilité débutants 65/100
-
frontend maui-pilot pilot-ask question
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
-
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
-
executions.Query — startDate and timeRange filters are sent with inverted comparison operators Ouvertearea/plugin
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
kestra-io/plugin-kestra#190 ·