JLBP-6 is misleading regarding "don’t publish the same classes under multiple Maven IDs"
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 3/5
- Tiempo estimado
- 1-2 días
- Aptitud para principiantes
- 48/100
- Tipo de issue
- Documentación
- Claridad
- Bastante claro
- Estado de actividad
- Tranquilo
- Stack tecnológico
- java
- Área
- build-system, documentation
Línea de trabajo
Empieza leyendo el texto actual de JLBP-6 y el reproductor de errores de jarsplit enlazado. Compara las indicaciones documentadas sobre clases superpuestas con el comportamiento de Maven y Gradle descrito en el issue y, después, revisa JLBP-6 para que su alcance y sus limitaciones sean precisos. Se considera terminado cuando las indicaciones ya no presentan el problema específico de Maven como universal.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
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.
- Lenguaje dominante
- Java
- Estrellas
- 163
- Forks
- 81
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de GoogleCloudPlatform/cloud-opensource-java
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
GoogleCloudPlatform/cloud-opensource-java#2419 · 1 comentario · 2 reacciones ·
-
best practices
Dificultad 1/5 Menos de una hora Aptitud para principiantes 62/100
-
Dificultad 3/5 1-2 días Aptitud para principiantes 55/100
-
JLBP-14 additional reason Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 42/100
-
Add a presubmit CI check for LTS Abiertoenhancement p2
GoogleCloudPlatform/cloud-opensource-java#2468 · 1 comentario · 1 asignado ·
Todos los issues de GoogleCloudPlatform/cloud-opensource-java
Issues similares
-
awaiting triage bug Causes friction Hop Gui P1 P2 Transforms
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
apache/flink-agents#1152 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
jenkinsci/blueocean-plugin#5417 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
objectionary/eo-graphs#75 ·