Podbicie wersji jednej z bibliotek w maven

Podbicie wersji jednej z bibliotek w maven
LU
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Gdańsk
0

Mam w projekcie taką zależność w maven:

Kopiuj
  		<dependency>
  			<groupId>org.springframework.cloud</groupId>
  			<artifactId>spring-cloud-starter-gateway</artifactId>
  		</dependency>

Środowisko CI/CD jednak odmawia mi zbudowania paczki z uwagi na zależność transytywną netty-codec-http:4.1.50 w związku tym podbiłem tą bibliotekę do wersji 4.1.96.Final w taki sposób:

Kopiuj
		<dependency>
			<groupId>io.netty</groupId>
			<artifactId>netty-codec-http</artifactId>
			<version>4.1.96.Final</version>
		</dependency>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-gateway</artifactId>
			<exclusions>
				<exclusion>
					<groupId>io.netty</groupId>
					<artifactId>netty-codec-http</artifactId>
				</exclusion>
			</exclusions>
		</dependency>

Jednak to nie działa. W drzewie zależności widzę:

Kopiuj
[INFO] +- io.netty:netty-codec-http:jar:4.1.96.Final:compile
[INFO] |  +- io.netty:netty-common:jar:4.1.50.Final:compile
[INFO] |  +- io.netty:netty-buffer:jar:4.1.50.Final:compile
[INFO] |  +- io.netty:netty-transport:jar:4.1.50.Final:compile
[INFO] |  |  \- io.netty:netty-resolver:jar:4.1.50.Final:compile
[INFO] |  +- io.netty:netty-codec:jar:4.1.50.Final:compile
[INFO] |  \- io.netty:netty-handler:jar:4.1.50.Final:compile

czyli jakby sama biblioteka została podbita a transytywne od niej już nie.. dlaczego tak się dzieje?

PI
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2787
1
lukascode napisał(a):

Środowisko CI/CD jednak odmawia mi zbudowania paczki z uwagi na zależność transytywną netty-codec-http:4.1.50

Co znaczy odmawia? Co dokładnie mu się nie podoba?

Exclude na tranzytywnych bibliotekach IMO ma sens jedynie w przypadku jakichś vulnerabilities, w przeciwnym wypadku łatwo o brak kompatybilności (nie od razu, ale np po kilku miesiącach użytkowania).

LU
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Gdańsk
0

@Pinek: Dokładnie, powodem odmowy są podatności

opiszon
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 832
7

@lukascode: zamiast pojedynczej biblioteki netty-codec-http zaimportuj bom
https://mvnrepository.com/artifact/io.netty/netty-bom/4.1.58.Final

Jak używać bom w mavenie https://www.baeldung.com/spring-maven-bom

opiszon
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 832
1

Btw wystarczy że zaimportujesz bom, nie musisz podbijać w konkretnych zależnościach tej przechodniej zaleznosci

LU
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Gdańsk
0

@opiszon: Dzięki faktycznie teraz wersje są takie jakie chce czyli 4.1.96.Final. Dlaczego ten mój sposób z exclusion nie działa?

opiszon
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 832
0

Robisz exclusion tylko jednej konkretnej zależności przejściowej z jednej zależności bezpośredniej. Wszystkie inne zależności z innych zależności ;-) dalej korzystają z konkretnej wersji.

Zaimportowanie bom nadpisuje wszystkie biblioteki.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.