BOM 폼을 가져올 때 Spring Boot에서 버전 번호를 재정의하는 방법은 무엇입니까?
종속성 관리 섹션에서 각 아티팩트를 수동으로 설정하지 않고 Spring Boot에서 가져오는 버전 번호를 재정의하려면 어떻게 해야 합니까?
<properties>
<spring.boot.version>1.5.7.RELEASE</spring.boot.version>
<jackson.version>2.9.1</jackson.version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${spring.boot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson</groupId>
<artifactId>jackson-bom</artifactId>
<version>${jackson.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
하지만, 내가 달릴 때
mvn dependency:tree "-Dincludes=com.fasterxml.jackson.*" -Dverbose
생산고
[INFO] ------------------------------------------------------------------------
[INFO] Building dpt-domain-core 1.0.0
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-dependency-plugin:2.8:tree (default-cli) @ dpt-domain-core ---
[INFO] net.initech.dpt:dpt-domain-core:jar:1.0.0
[INFO] +- com.fasterxml.jackson.core:jackson-annotations:jar:2.8.0:compile
[INFO] +- com.fasterxml.jackson.core:jackson-core:jar:2.8.10:compile
[INFO] +- com.fasterxml.jackson.core:jackson-databind:jar:2.8.10:compile
[INFO] | +- (com.fasterxml.jackson.core:jackson-annotations:jar:2.8.0:compile - omitted for duplicate)
[INFO] | \- (com.fasterxml.jackson.core:jackson-core:jar:2.8.10:compile - omitted for duplicate)
[INFO] \- com.fasterxml.jackson.datatype:jackson-datatype-jsr310:jar:2.8.10:compile
[INFO] +- (com.fasterxml.jackson.core:jackson-annotations:jar:2.8.0:compile - omitted for duplicate)
[INFO] +- (com.fasterxml.jackson.core:jackson-core:jar:2.8.10:compile - omitted for duplicate)
[INFO] \- (com.fasterxml.jackson.core:jackson-databind:jar:2.8.10:compile - omitted for duplicate)
어디에2.8.10
의 값입니다.jackson.version
그거org.springframework.boot:spring-boot-dependencies:1.5.7.RELEASE:pom
를 정의합니다.
하지만, 만약 내가 명시적으로 추가한다면.
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>${jackson.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>${jackson.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
<version>${jackson.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>${jackson.version}</version>
</dependency>
내 종속성 관리 섹션으로 이동하면 다음과 같이 올바르게 해결됩니다.
[INFO] ------------------------------------------------------------------------
[INFO] Building dpt-domain-core 1.0.0
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-dependency-plugin:2.8:tree (default-cli) @ dpt-domain-core ---
[INFO] org.autodatacorp.dpt:dpt-domain-core:jar:1.0.0
[INFO] +- com.fasterxml.jackson.core:jackson-annotations:jar:2.9.1:compile
[INFO] +- com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile
[INFO] +- com.fasterxml.jackson.core:jackson-databind:jar:2.9.1:compile
[INFO] \- com.fasterxml.jackson.datatype:jackson-datatype-jsr310:jar:2.9.1:compile
[INFO] ------------------------------------------------------------------------
이것은 혼란스럽습니다, 왜냐하면 그것은 그것을 하는 것과 동등해야 하는 것처럼 보이기 때문입니다.import
의com.fasterxml.jackson:jackson-bom:2.9.1:pom
해당 코드의 내용을 수동으로 붙여넣는 것과 같아야 합니다.
해보기도 했습니다.
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${spring.boot.version}</version>
<exclusions>
<exclusion>
<groupId>com.fasterxml.jackson</groupId>
<artifactId>jackson-bom</artifactId>
</exclusion>
</exclusions>
<type>pom</type>
<scope>import</scope>
</dependency>
하지만 아무 효과도 없습니다.
PS - 중요한 경우, 제가 사용하고 있는 메이븐은 다음과 같습니다.
Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-10T11:41:47-05:00)
Java version: 9, vendor: Oracle Corporation
- BOM 가져오기를 다시 주문하면 작동합니다.스프링 부트 BOM 앞에 잭슨 BOM을 배치합니다.빠른 예 https://github.com/Flaw101/gsonconverter/blob/feature/jackson_override/pom.xml
- Spring Boot 부모 POM을 사용하는 경우 해당 속성을 재정의하면 됩니다.
jackson.version
다른 프레임워크/프로그래밍 버전을 재정의함
이는 Spring Boot에서도 문서화되어 있습니다.
https://docs.spring.io/platform/docs/current/reference/html/getting-started-overriding-versions.html
몇 개의 추가 링크,
추가 중jackson-bom.version
pom.xml 파일의 속성 섹션에 잭슨 종속성을 업데이트해야 합니다.이렇게 하면 Spring Boot 부모 POM의 Jackson 버전이 재정의됩니다.
<properties>
<jackson-bom.version>2.12.1</jackson-bom.version>
</properties>
사용.jackson.version
작동하지 않을 것 같아요.https://github.com/spring-projects/spring-boot/issues/17808 을 참조하십시오.
언급URL : https://stackoverflow.com/questions/46475554/how-to-override-the-version-numbers-from-spring-boot-when-importing-a-bom-pom
'programing' 카테고리의 다른 글
ASP.NET WebApi: WebApi HttpClient를 사용하여 파일 업로드로 다중 파트 게시를 수행하는 방법 (0) | 2023.07.01 |
---|---|
Python의 s= "안녕하세요, %s"에 해당하는 루비는 무엇입니까?%s은(는) 어디에 있습니까?" %("John", "Mary")" (0) | 2023.07.01 |
R에 객체(변수)가 정의되어 있는지 확인하는 방법은 무엇입니까? (0) | 2023.07.01 |
휴대용 MongoDB? (0) | 2023.07.01 |
레이저 보기에서 인코딩되지 않은 문자열 내보내기 (0) | 2023.07.01 |