Hei Petter og Thomas!Det ser ut som Derehar en god forståelse av hvordan avhengigheter fungerer i Maven, men her er en nærmere titt på hvorfor både json og json-smart kan bli dratt inn, samt hva vi kan gjøre med det. Hvorfor både json og json-smart?
1. Direkte avhengighet: org.json:json er oppført som en direkte avhengighet i ditt prosjekt. Dette betyr at du (eller Thomas som vedlikeholder prosjektet) eksplisitt har lagt den til i pom.xml.
2. Transitivt avhengighetstrekk: json-smart (fra net.minidev) ser ut til å komme inn via en transitive avhengighet. Fra mvn dependency:tree ser det ut til at:
* spring-boot-starter-json kan trekke den inn. * com.jayway.jsonpath:json-path kan også være en mulig kilde til json-smart.
3. Overlapping: De to bibliotekene (json og json-smart) har overlappende funksjonalitet, men med ulike implementasjoner. Spring Framework bruker ofte forskjellige JSON-biblioteker for spesifikke bruksområder, som f.eks. JSON-serialisering, JSONPath-evaluering, eller JSON-datamanipulering. Hvordan finne ut hvilken avhengighet som trekker inn json-smart?
1. Bruk Maven's verktøy for å undersøke transitive avhengigheter: mvn dependency:tree -Dverbose -Dincludes=net.minidev:json-smart Dette vil vise nøyaktig hvem som trekker inn json-smart.
2. Hvis du vil undersøke hele treet, prøv: mvn dependency:tree -Dverbose
3. Filtrer etter spesifikke avhengigheter for å forstå hvor json-smart brukes: mvn dependency:tree | grep json-smart Løsning for å eliminere én JSON-avhengighet
Hvis du ønsker å fjerne en av dem (f.eks. json-smart), kan du bruke dependency exclusion i pom.xml. Eksempel: Hvis json-smart trekkes inn av com.jayway.jsonpath:json-path, kan du ekskludere det slik:
<dependency> <groupId>com.jayway.jsonpath</groupId> <artifactId>json-path</artifactId> <version>2.9.0</version> <exclusions> <exclusion> <groupId>net.minidev</groupId> <artifactId>json-smart</artifactId> </exclusion> </exclusions> </dependency> Debian-pakker og Spring Når du nevner Debian-pakker, er det verdt å merke seg:
* Spring-pakkene i Debian er vanligvis eldre versjoner. Hvis du bruker nyere Spring Boot, kan det bli utfordrende å opprettholde et oppdatert miljø basert på Debian-pakker alene. * Avhengighetene i Maven (f.eks. json-smart og json) er ofte mer oppdaterte og integrert med Spring Boot-økosystemet. Konklusjon
* Debug først: Bruk mvn dependency:tree -Dverbose for å finne ut hvem som trekker inn json-smart. * Eksluder om nødvendig: Hvis json-smart ikke trengs, ekskluder den eksplisitt. * Evaluer behov: Spring Boot er optimalisert for å bruke flere JSON-biblioteker for spesifikke formål. Hvis funksjonaliteten ikke overlapper praktisk, kan det være greit å beholde begge. Lykke til, og happy hacking! 😊
Mvh, Ole Den tirsdag 17. desember 2024 15.17.42 +01.00 skrev Petter Reinholdtsen pere@hungry.com:
[Thomas John Sødring]
mvn dependency:tree
for å se oppbygging av avhengigheter som et tre.
Ah, takk. Den var nyttig.
Hvorfor trengs både json og jsonsmart?
[INFO] +- org.json:json:jar:20231013:compile
Merkelig nok klarer jeg ikke finne ut hvorfor jsonsmart dras inn:
% mvn dependency:tree | grep -i json [INFO] | +- org.springframework.boot:spring-boot-starter-json:jar:3.2.5:compile [INFO] +- org.json:json:jar:20231013:compile [INFO] | +- com.jayway.jsonpath:json-path:jar:2.9.0:test [INFO] | +- net.minidev:json-smart:jar:2.5.1:compile [INFO] | +- org.skyscreamer:jsonassert:jar:1.5.1:test [INFO] | | - com.vaadin.external.google:android-json:jar:0.0.20131108.vaadin1:test
Å bruke litt tid på avhengigheter i spring prosjekter er alltid en god ide og noe vi bør bruke litt tid på her.
Godt.
Jeg tenkte skrive om til å kun bruke en json-avhengighet, men klarte ikke finne ut hvorfor begge var listet opp i classpath, så dropper det i denne omgang.
Jeg ser at Spring finnes fra Debian som pakker, så da er det kun de øvrige avhengighetene som mangler for å kunne basere oss på Debianpakker i Debian.
-- Happy hacking Petter Reinholdtsen _______________________________________________ nikita-noark mailing list -- nikita-noark@nuug.no To unsubscribe send an email to nikita-noark-leave@nuug.no