5.5. Service Registry Maven 플러그인을 사용하여 자동으로 아티팩트 참조 추가
일부 Service Registry 아티팩트 유형에는 한 아티팩트 파일에서 다른 아티팩트 파일로의 아티팩트 참조 가 포함될 수 있습니다. 재사용 가능한 스키마 또는 API 아티팩트를 정의한 다음 아티팩트 참조의 여러 위치에서 참조할 수 있습니다.
다음 아티팩트 유형은 아티팩트 참조를 지원합니다.
- Apache Avro
- Google Protobuf
- JSON 스키마
- OpenAPI
- AsyncAPI
단일 아티팩트를 지정하고 동일한 디렉터리에 있는 아티팩트에 대한 모든 참조를 자동으로 감지하고 해당 참조를 자동으로 등록하도록 Service Registry Maven 플러그인을 구성할 수 있습니다. 이는 기술 프리뷰 기능입니다.
기술 프리뷰 기능은 RedHat 프로덕션 서비스 수준 계약(SLA)에서 지원되지 않으며 기능적으로 완전하지 않을 수 있습니다. RedHat은 프로덕션 환경에서 사용하는 것을 권장하지 않습니다. 이러한 기능을 사용하면 향후 제품 기능을 조기에 이용할 수 있어 개발 과정에서 고객이 기능을 테스트하고 피드백을 제공할 수 있습니다.
RedHat 기술 프리뷰 기능의 지원 범위에 대한 자세한 내용은 기술 프리뷰 기능 지원 범위를 참조하십시오.
이 섹션에서는 Maven 플러그인을 사용하여 Avro 스키마를 등록하고 아티팩트 참조를 간단한 스키마 아티팩트에 자동으로 탐지하고 등록하는 간단한 예를 보여줍니다. 이 예에서는 상위 tradeKey 아티팩트와 중첩된 교환 스키마 아티팩트가 모두 동일한 디렉터리에서 사용 가능한 것으로 가정합니다.
교환 스키마에 대한 중첩된 참조가 있는 tradeKey 스키마
{
"namespace": "com.kubetrade.schema.trade",
"type": "record",
"name": "TradeKey",
"fields": [
{
"name": "exchange",
"type": "com.kubetrade.schema.common.Exchange"
},
{
"name": "key",
"type": "string"
}
]
}
교환 스키마
{
"namespace": "com.kubetrade.schema.common",
"type": "enum",
"name": "Exchange",
"symbols" : ["GEMINI"]
}
사전 요구 사항
- 클라이언트 애플리케이션에 대한 Maven 프로젝트를 생성했습니다. 자세한 내용은 Apache Maven 설명서 를 참조하십시오.
-
tradeKey스키마 아티팩트와 중첩된교환스키마 아티팩트 파일은 둘 다 동일한 디렉터리에 있습니다.
프로세스
apicurio-registry-maven-plugin을 사용하여 다음과 같이교환스키마에 중첩된 참조가 포함된tradeKey스키마를 등록하도록 Mavenpom.xml파일을 업데이트합니다.<plugin> <groupId>io.apicurio</groupId> <artifactId>apicurio-registry-maven-plugin</artifactId> <version>${apicurio-registry.version}</version> <executions> <execution> <phase>generate-sources</phase> <goals> <goal>register</goal>1 </goals> <configuration> <registryUrl>MY-REGISTRY-URL/apis/registry/v2</registryUrl>2 <authServerUrl>MY-AUTH-SERVER</authServerUrl> <clientId>MY-CLIENT-ID</clientId> <clientSecret>MY-CLIENT-SECRET</clientSecret>3 <clientScope>MY-CLIENT-SCOPE</clientScope> <artifacts> <artifact> <groupId>test-group</groupId>4 <artifactId>TradeKey</artifactId> <version>2.0</version> <type>AVRO</type> <file> ${project.basedir}/src/main/resources/schemas/TradeKey.avsc5 </file> <ifExists>RETURN_OR_UPDATE</ifExists> <canonicalize>true</canonicalize> <autoRefs>true</autoRefs>6 </artifact> </artifacts> </configuration> </execution> </executions> </plugin>- 1
- 서비스 레지스트리에 스키마 아티팩트를 업로드하려면
register를 실행 목표로 지정합니다. - 2
../apis/registry/v2끝점을 사용하여 서비스 레지스트리 URL을 지정합니다.- 3
- 인증이 필요한 경우 인증 서버 및 클라이언트 자격 증명을 지정할 수 있습니다.
- 4
- 참조가 포함된 상위 아티팩트 그룹 ID를 지정합니다. 고유한 그룹 ID를 사용하지 않으려면
기본그룹을 지정할 수 있습니다. - 5
- 상위 아티팩트 파일의 위치를 지정합니다. 참조된 모든 아티팩트도 동일한 디렉터리에 있어야 합니다.
- 6
- 동일한 디렉터리의 아티팩트에 대한 모든 참조를 자동으로 탐지하고 등록하려면 <
autoRefs> 옵션을 true로 설정합니다. 이러한 방식으로 여러 아티팩트 참조를 등록할 수 있습니다.
-
예를 들어
mvn package명령을 사용하여 Maven 프로젝트를 빌드합니다.