JLBP-6 is misleading regarding "don’t publish the same classes under multiple Maven IDs"
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 3/5
- Geschätzter Aufwand
- 1-2 Tage
- Anfängerfreundlichkeit
- 48/100
- Issue-Typ
- Dokumentation
- Klarheit
- Größtenteils klar
- Aktivitätsstatus
- Ruhig
- Tech-Stack
- java
- Bereich
- build-system, documentation
Rechercherichtung
Lies zunächst den aktuellen JLBP-6-Text und den verlinkten jarsplit-Reproducer. Vergleiche die dokumentierte Anleitung zu überlappenden Klassen mit dem im Issue beschriebenen Verhalten von Maven und Gradle, und überarbeite JLBP-6, sodass Umfang und Einschränkungen korrekt sind. Fertig ist die Aufgabe, wenn die Anleitung das Maven-spezifische Problem nicht mehr als universell darstellt.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
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.
- Vorherrschende Sprache
- Java
- Sterne
- 163
- Forks
- 81
- PR-Merge-Kennzahlen
- Keine gemergten PRs in 30 T.
Entwicklungsumgebung
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus GoogleCloudPlatform/cloud-opensource-java
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 75/100
GoogleCloudPlatform/cloud-opensource-java#2419 · 1 Kommentar · 2 Reaktionen ·
-
best practices
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 62/100
-
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 55/100
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 42/100
-
Add a presubmit CI check for LTSEvtl. wieder frei @diegomarquezp hat das vor 174 Tagen übernommen, und es ist kein Pull Request offen. Offenenhancement p2
GoogleCloudPlatform/cloud-opensource-java#2468 · 1 Kommentar · 1 zugewiesene Person ·
Alle Issues in GoogleCloudPlatform/cloud-opensource-java
Ähnliche Issues
-
bug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
-
component/zeebe kind/bug
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 90/100
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
UniversalMediaServer/UniversalMediaServer#6356 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 88/100
refinedmods/refinedstorage2#1414 · 1 Kommentar ·
-
Schwierigkeit 1/5 1-3 Stunden Anfängerfreundlichkeit 88/100
yegor256/rultor-image#76 · 1 Kommentar ·