JLBP-6 is misleading regarding "don’t publish the same classes under multiple Maven IDs"
@Suraj8982 já está trabalhando nisso.
Desde 9/11/2025.
Avaliação
- Dificuldade
- 3/5
- Tempo estimado
- 1-2 dias
- Facilidade para iniciantes
- 48/100
- Tipo de issue
- Documentação
- Clareza
- Razoavelmente clara
- Status de atividade
- Pouca atividade
- Stack de tecnologia
- java
- Domínio
- build-system, documentation
Direção de pesquisa
Comece lendo o texto atual de JLBP-6 e o reproducer de jarsplit vinculado. Compare as orientações documentadas sobre classes sobrepostas com o comportamento do Maven e do Gradle descrito na issue e, em seguida, revise JLBP-6 para que seu escopo e suas limitações estejam corretos. O trabalho estará concluído quando as orientações não apresentarem mais o problema específico do Maven como universal.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
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.
- Linguagem predominante
- Java
- Estrelas
- 165
- Forks
- 82
- Métricas de merge de PRs
- Nenhum PR com merge em 30d
Preparar o ambiente
- Sem Dockerfile nem arquivo Docker Compose
- Sem modelo de pull request
- Ler o guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de GoogleCloudPlatform/cloud-opensource-java
-
Class file versions 65 in linkage checkerTalvez livre de novo @priyanshuvishwakarma273403 assumiu há 111 dias e não há nenhum pull request aberto. Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 75/100
GoogleCloudPlatform/cloud-opensource-java#2419 · 1 comentário · 2 reações ·
-
best practices
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 62/100
-
Dificuldade 3/5 1-2 dias Facilidade para iniciantes 55/100
-
JLBP-14 additional reasonAberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 42/100
-
Add a presubmit CI check for LTSTalvez livre de novo @diegomarquezp assumiu há 186 dias e não há nenhum pull request aberto. Abertaenhancement p2
GoogleCloudPlatform/cloud-opensource-java#2468 · 1 comentário · 1 responsável ·
Todas as issues de GoogleCloudPlatform/cloud-opensource-java
Issues semelhantes
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
objectionary/eo-graphs#85 ·
-
BoxAttachmentMulti parsing leaks IOException / ArrayIndexOutOfBoundsException on malformed content instead of IllegalArgumentExceptionTalvez já em andamento @Kshot3000 assumiu hoje. Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 74/100
ergoplatform/ergo-appkit#272 ·
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 64/100
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 66/100
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 64/100
utopia-rise/godot-jvm#1004 ·
Mantenedores costumam responder em até 1 dia