programing

BOM 폼을 가져올 때 Spring Boot에서 버전 번호를 재정의하는 방법은 무엇입니까?

lastmoon 2023. 7. 1. 09:19
반응형

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] ------------------------------------------------------------------------

이것은 혼란스럽습니다, 왜냐하면 그것은 그것을 하는 것과 동등해야 하는 것처럼 보이기 때문입니다.importcom.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
  1. BOM 가져오기를 다시 주문하면 작동합니다.스프링 부트 BOM 앞에 잭슨 BOM을 배치합니다.빠른 예 https://github.com/Flaw101/gsonconverter/blob/feature/jackson_override/pom.xml
  2. Spring Boot 부모 POM을 사용하는 경우 해당 속성을 재정의하면 됩니다.jackson.version다른 프레임워크/프로그래밍 버전을 재정의함

이는 Spring Boot에서도 문서화되어 있습니다.

https://docs.spring.io/platform/docs/current/reference/html/getting-started-overriding-versions.html

몇 개의 추가 링크,

https://docs.spring.io/spring-boot/docs/current/reference/html/using-boot-build-systems.html#using-boot-maven-parent-pom

https://docs.spring.io/spring-boot/docs/current/reference/html/using-boot-build-systems.html#using-boot-maven-without-a-parent

추가 중jackson-bom.versionpom.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

반응형