1.7. Camel Spring Boot에 패치 적용


새로운 patch-maven-plugin 메커니즘을 사용하면 Red Hat Camel Spring Boot 애플리케이션에 패치를 적용할 수 있습니다. 이 메커니즘을 사용하면 다른 Red Hat 애플리케이션 BOMS에서 제공하는 개별 버전(예: camel-spring-boot-bom )을 변경할 수 있습니다.

patch-maven-plugin 은 Camel on Spring Boot BOM에 나열된 종속성 버전을 애플리케이션에 적용하려는 패치 메타데이터에 지정된 버전으로 업데이트하는 것입니다.

patch-maven-plugin은 다음 작업을 수행합니다.

  • 현재 Red Hat 애플리케이션 BOM과 관련된 패치 메타데이터를 검색합니다.
  • 버전 변경 사항을 BOM에서 가져온 <dependencyManagement>에 적용합니다.

patch-maven-plugin 이 메타데이터를 가져온 후 플러그인이 선언된 프로젝트의 모든 관리 및 직접 종속 항목을 반복하고 CVE/patch 메타데이터를 사용하여 종속성 버전(동일한 경우)을 대체합니다. 버전이 교체되면 Maven 빌드가 계속되고 표준 Maven 프로젝트 단계를 통해 진행됩니다.

절차

다음 절차에서는 패치를 애플리케이션에 적용하는 방법을 설명합니다.

  1. 프로젝트의 pom.xml 파일에 patch-maven-plugin 을 추가합니다. patch-maven-plugin 버전은 Spring Boot BOM의 Camel 버전과 동일해야 합니다.

    <build>
        <plugins>
            <<plugin>
                <groupId>com.redhat.camel.springboot.platform</groupId>
                <artifactId>patch-maven-plugin</artifactId>
                <version>${camel-spring-boot-version}</version>
                <extensions>true</extensions>
            </plugin>
        </plugins>
    </build>
    Copy to Clipboard Toggle word wrap
  2. mvn clean deploy,mvn validate, mvn dependency:tree 명령을 실행하는 경우 플러그인은 프로젝트 모듈을 통해 모듈이 Red Hat Camel Spring Boot BOM을 사용하는지 확인합니다. 다음은 지원되는 BOM입니다.

    • com.redhat.camel.springboot.platform:camel-spring-boot-bom: Camel Spring Boot BOM
  3. 플러그인이 위의 BOM을 찾지 못하면 플러그인은 다음 메시지를 표시합니다.

    $ mvn clean install
    
    [INFO] Scanning for projects...
    [INFO]
    
    ========== Red Hat Maven patching ==========
    
    [INFO] [PATCH] No project in the reactor uses Camel on Spring Boot product BOM. Skipping patch processing.
    [INFO] [PATCH] Done in 7ms
    
    =================================================
    Copy to Clipboard Toggle word wrap
  4. 올바른 BOM을 사용하면 패치 메타데이터를 찾을 수 있지만 패치가 없습니다.

    $ mvn clean install
    
    [INFO] Scanning for projects...
    [INFO]
    
    ========== Red Hat Maven patching ==========
    
    [INFO] [PATCH] Reading patch metadata and artifacts from 2 project repositories
    [INFO] [PATCH]  - redhat-ga-repository: http://maven.repository.redhat.com/ga/
    [INFO] [PATCH]  - central: https://repo.maven.apache.org/maven2
    Downloading from redhat-ga-repository: http://maven.repository.redhat.com/ga/com/redhat/camel/springboot/platform/redhat-camel-spring-boot-patch-metadata/maven-metadata.xml
    Downloading from central: https://repo.maven.apache.org/maven2/com/redhat/camel/springboot/platform/redhat-camel-spring-boot-patch-metadata/maven-metadata.xml
    [INFO] [PATCH] Resolved patch descriptor: /path/to/.m2/repository/com/redhat/camel/springboot/platform/redhat-camel-spring-boot-patch-metadata/3.20.1.redhat-00043/redhat-camel-spring-boot-patch-metadata-3.20.1.redhat-00043.xml
    [INFO] [PATCH] Patch metadata found for com.redhat.camel.springboot.platform/camel-spring-boot-bom/[3.20,3.21)
    [INFO] [PATCH] Done in 938ms
    
    =================================================
    Copy to Clipboard Toggle word wrap
  5. patch-maven-plugin 은 이 Maven 메타데이터를 가져오려고 합니다.

    • Camel Spring Boot BOM을 사용하는 프로젝트의 경우 com.redhat.camel.springboot.platform:redhat-camel-spring-boot-patch-metadata/maven-metadata.xml 이 해결되었습니다. 이 XML 데이터는 com.redhat.camel.springboot.platform:redhat-camel-spring-boot-patch-metadata:RELEASE 조정을 사용한 아티팩트의 메타데이터입니다.

      Maven에서 생성한 메타데이터의 예

      <?xml version="1.0" encoding="UTF-8"?>
      <metadata>
        <groupId>com.redhat.camel.springboot.platform</groupId>
        <artifactId>redhat-camel-spring-boot-patch-metadata</artifactId>
        <versioning>
          <release>3.20.1.redhat-00041</release>
          <versions>
            <version>3.20.1.redhat-00041</version>
          </versions>
          <lastUpdated>20230322103858</lastUpdated>
        </versioning>
      </metadata>
      Copy to Clipboard Toggle word wrap

  6. patch-maven-plugin 은 메타데이터를 구문 분석하여 현재 프로젝트에 적용되는 버전을 선택합니다. 이 작업은 특정 버전의 Spring Boot BOM에서 Camel을 사용하는 Maven 프로젝트에만 적용할 수 있습니다. 버전 범위 이상과 일치하는 메타데이터만 적용되며 최신 버전의 메타데이터만 가져옵니다.
  7. patch-maven-plugin 은 이전 단계에서 발견된 groupId,artifactId버전으로 식별된 패치 메타데이터를 다운로드하는 원격 Maven 리포지토리 목록을 수집합니다. 이러한 Maven 리포지토리는 활성 프로필의 프로젝트의 < repositories > 요소와 settings.xml 파일의 리포지토리에도 나열됩니다.

    $ mvn clean install
    [INFO] Scanning for projects...
    [INFO]
    
    ========== Red Hat Maven patching ==========
    
    [INFO] [PATCH] Reading patch metadata and artifacts from 2 project repositories
    [INFO] [PATCH]  - MRRC-GA: https://maven.repository.redhat.com/ga
    [INFO] [PATCH]  - central: https://repo.maven.apache.org/maven2
    Copy to Clipboard Toggle word wrap
  8. 메타데이터가 원격 리포지토리, 로컬 리포지토리 또는 ZIP 파일에서 제공되는지 여부에 관계없이 patch-maven-plugin 으로 분석됩니다. 가져온 메타데이터에는 CVE 목록이 포함되어 있으며 각 CVE에 대해 지정된 CVE에 대한 수정 사항이 포함된 버전과 함께 영향을 받는 Maven 아티팩트 목록이 있습니다. 예를 들면 다음과 같습니다.

    <?xml version="1.0" encoding="UTF-8" ?>
    
    <<metadata xmlns="urn:redhat:patch-metadata:1">
        <product-bom groupId="com.redhat.camel.springboot.platform" artifactId="camel-spring-boot-bom" versions="[3.20,3.21)" />
        <cves>
        </cves>
        <fixes>
            <fix id="HF0-1" description="logback-classic (Example) - Version Bump">
                <affects groupId="ch.qos.logback" artifactId="logback-classic" versions="[1.0,1.3.0)" fix="1.3.0" />
            </fix>
        </fixes>
    </metadata>
    Copy to Clipboard Toggle word wrap
  9. 마지막으로 현재 프로젝트의 모든 관리 종속 항목을 반복할 때 패치 메타데이터에 지정된 수정 사항 목록이 참조됩니다. 일치하는 이러한 종속 항목(및 관리되는 종속 항목)은 수정된 버전으로 변경됩니다. 예를 들면 다음과 같습니다.

    $ mvn dependency:tree
    
    [INFO] Scanning for projects...
    [INFO]
    
    ========== Red Hat Maven patching ==========
    
    [INFO] [PATCH] Reading patch metadata and artifacts from 3 project repositories
    [INFO] [PATCH]  - redhat-ga-repository: http://maven.repository.redhat.com/ga/
    [INFO] [PATCH]  - local: file:///path/to/.m2/repository
    [INFO] [PATCH]  - central: https://repo.maven.apache.org/maven2
    [INFO] [PATCH] Resolved patch descriptor:/path/to/.m2/repository/com/redhat/camel/springboot/platform/redhat-camel-spring-boot-patch-metadata/3.20.1.redhat-00043/redhat-camel-spring-boot-patch-metadata-3.20.1.redhat-00043.xml
    [INFO] [PATCH] Patch metadata found for com.redhat.camel.springboot.platform/camel-spring-boot-bom/[3.20,3.21)
    [INFO] [PATCH]  - patch contains 1 patch fix
    [INFO] [PATCH] Processing managed dependencies to apply patch fixes...
    [INFO] [PATCH] - HF0-1: logback-classic (Example) - Version Bump
    [INFO] [PATCH]   Applying change ch.qos.logback/logback-classic/[1.0,1.3.0) -> 1.3.0
    [INFO] [PATCH]   Project com.test:yaml-routes
    [INFO] [PATCH]    - managed dependency: ch.qos.logback/logback-classic/1.2.11 -> 1.3.0
    [INFO] [PATCH] Done in 39ms
    
    =================================================
    Copy to Clipboard Toggle word wrap

패치 건너뛰기

프로젝트에 특정 패치를 적용하지 않으려면 patch-maven-plugin건너뛰기 옵션을 제공합니다. 프로젝트의 pom.xml 파일에 patch-maven-plugin 을 이미 추가했으며 버전을 변경하지 않으려면 다음 방법 중 하나를 사용하여 패치를 건너뛸 수 있습니다.

  • 다음과 같이 프로젝트의 pom.xml 파일에 skip 옵션을 추가합니다.
<build>
    <plugins>
        <plugin>
            <groupId>com.redhat.camel.springboot.platform</groupId>
            <artifactId>patch-maven-plugin</artifactId>
            <version>${camel-spring-boot-version}</version>
            <extensions>true</extensions>
            <configuration>
                <skip>true</skip>
            </configuration>
        </plugin>
    </plugins>
</build>
Copy to Clipboard Toggle word wrap
  • 또는 다음과 같이 mvn 명령을 실행할 때 -DskipPatch 옵션을 사용합니다.
$ mvn clean install -DskipPatch
[INFO] Scanning for projects...
[INFO]
[INFO] -------------------------< com.example:test-csb >-------------------------
[INFO] Building A Camel Spring Boot Route 1.0-SNAPSHOT
...
Copy to Clipboard Toggle word wrap

위 출력에 표시된 대로 patch-maven-plugin 이 호출되지 않아 패치가 애플리케이션에 적용되지 않았습니다.

맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다. 최신 업데이트를 확인하세요.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

Theme

© 2025 Red Hat