검색

47장. API 구성 요소 Maven 플러그인 구성

download PDF

초록

이 장에서는 API 구성 요소 Maven 플러그인에서 사용할 수 있는 모든 구성 옵션에 대한 참조를 제공합니다.

47.1. 플러그인 구성 개요

47.1.1. 개요

API 구성 요소 Maven 플러그인의 주요 용도인 camel-api-component-maven-plugin 은 엔드포인트 URI와 API 메서드 호출 간의 매핑을 구현하는 API 매핑 클래스를 생성하는 것입니다. API 구성 요소 Maven 플러그인의 구성을 편집하여 API 매핑의 다양한 측면을 사용자 지정할 수 있습니다.

47.1.2. 생성된 코드의 위치

API 구성 요소 Maven 플러그인에서 생성한 API 매핑 클래스는 기본적으로 다음 위치에 배치됩니다.

ProjectName-component/target/generated-sources/camel-component

47.1.3. 사전 요구 사항

API 구성 요소 Maven 플러그인에 대한 주요 입력은 Java API 클래스 및 Javadoc 메타데이터입니다. 이는 플러그인에서 일반 Maven 종속 항목으로 선언하여 사용할 수 있습니다(Javadoc Maven 종속 항목은 제공된 범위로 선언해야 함).

47.1.4. 플러그인 설정

API 구성 요소 Maven 플러그인을 설정하는 권장 방법은 API 구성 요소 archetype을 사용하여 시작점 코드를 생성하는 것입니다. 이렇게 하면 프로젝트에 맞게 사용자 지정할 수 있는 ProjectName-component/pom.xml 파일에 기본 플러그인 구성이 생성됩니다. 플러그인 설정의 주요 측면은 다음과 같습니다.

  1. 필수 Java API 및 Javadoc 메타데이터에 대해 Maven 종속성을 선언해야 합니다.
  2. 플러그인의 기본 구성은 pluginManagement 범위(사용할 플러그인의 버전도 정의)에 선언됩니다.
  3. 플러그인 인스턴스 자체는 선언 및 구성됩니다.
  4. build-helper-maven 플러그인은 target/generated-sources/camel-component 디렉터리에서 생성된 소스를 가져와 Maven 빌드에 포함하도록 구성됩니다.

47.1.5. 기본 구성 예

다음 POM 파일 추출은 API 구성 요소 archetype을 사용하여 코드가 생성될 때 Maven 플러그인에 정의된 API 구성 요소 Maven 플러그인의 기본 구성을 보여줍니다.

<?xml version="1.0" encoding="UTF-8"?>
<project ...>
  ...
  <build>
    ...
    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>org.apache.camel</groupId>
          <artifactId>camel-api-component-maven-plugin</artifactId>
          <version>2.21.0.fuse-760027-redhat-00001</version>
          <configuration>
            <scheme>${schemeName}</scheme>
            <componentName>${componentName}</componentName>
            <componentPackage>${componentPackage}</componentPackage>
            <outPackage>${outPackage}</outPackage>
          </configuration>
        </plugin>
      </plugins>
    </pluginManagement>
    ...
  </build>
  ...
</project

pluginManagement 범위에 지정된 구성은 플러그인에 대한 기본 설정을 제공합니다. 실제로 플러그인 인스턴스를 생성하지 않지만 모든 API 구성 요소 플러그인 인스턴스에서 기본 설정을 사용합니다.

47.1.6. 기본 구성

플러그인 버전( 버전 요소)을 지정하는 것 외에도 이전 기본 구성은 다음과 같은 구성 속성을 지정합니다.

스키마
이 API 구성 요소의 URI 스키마입니다.
componentName
이 API 구성 요소의 이름입니다(생성된 클래스 이름에 접두사로 사용됨).
componentPackage
API 구성 요소 Maven archetype에서 생성한 클래스를 포함하는 Java 패키지를 지정합니다. 이 패키지는 기본 maven-bundle-plugin 구성에서도 내보냅니다. 따라서 클래스를 공개적으로 표시하려면 이 Java 패키지에 배치해야 합니다.
outPackage
생성된 API 매핑 클래스가 배치되는 Java 패키지를 지정합니다(API 구성 요소 Maven 플러그인에 의해 생성될 때). 기본적으로 이 값은 componentName 속성 값이고 .internal 접미사가 추가됩니다. 이 패키지는 기본 maven-bundle-plugin 구성에 의해 비공개로 선언됩니다. 따라서 클래스를 개인용으로 사용하려면 이 Java 패키지에 배치해야 합니다.

47.1.7. 인스턴스 구성 예

다음 POM 파일 추출은 Maven 빌드 중에 API 매핑을 생성하도록 구성된 API 구성 요소 Maven 플러그인의 샘플 인스턴스를 보여줍니다.

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">

  ...
  <build>
    <defaultGoal>install</defaultGoal>

    <plugins>
      ...
      <!-- generate Component source and test source -->
      <plugin>
        <groupId>org.apache.camel</groupId>
        <artifactId>camel-api-component-maven-plugin</artifactId>
        <executions>
          <execution>
            <id>generate-test-component-classes</id>
            <goals>
              <goal>fromApis</goal>
            </goals>
            <configuration>
              <apis>
                <api>
                  <apiName>hello-file</apiName>
                  <proxyClass>org.jboss.fuse.example.api.ExampleFileHello</proxyClass>
                  <fromSignatureFile>signatures/file-sig-api.txt</fromSignatureFile>
                </api>
                <api>
                  <apiName>hello-javadoc</apiName>
                  <proxyClass>org.jboss.fuse.example.api.ExampleJavadocHello</proxyClass>
                  <fromJavadoc/>
                </api>
              </apis>
            </configuration>
          </execution>
        </executions>
      </plugin>
      ...
    </plugins>
    ...
  </build>
  ...
</project>

47.1.8. 기본 매핑 구성

플러그인은 Java API의 클래스를 구성하는 단일 apis 하위 요소가 포함된 구성 요소로 구성됩니다. 각 API 클래스는 다음과 같이 api 요소에 의해 구성됩니다.

apiName

API 이름은 API 클래스의 짧은 이름이며 엔드포인트 URI의 엔드포인트-접 두사 부분으로 사용됩니다.

참고

API가 단일 Java 클래스로 구성된 경우 apiName 요소를 비워 두어 끝점 이 중복되게 하고 “단일 API 클래스의 URI 형식” 에 표시된 형식을 사용하여 끝점 URI를 지정할 수 있습니다.

proxyClass
이 요소는 API 클래스의 정규화된 이름을 지정합니다.
fromJavadoc
API 클래스가 Javadoc 메타데이터와 함께 제공되는 종속성으로 fromJavadoc 요소와 Javadoc 자체도 지정해야 합니다.
fromSignatureFile

API 클래스가 서명 파일 메타데이터와 함께 이 클래스의 콘텐츠가 서명 파일의 위치를 지정하는 fromSignatureFile 요소를 포함하여 이를 표시해야 합니다.

참고

서명 파일은 런타임이 아닌 빌드 시에만 필요하므로 Maven에서 빌드한 최종 패키지에 포함되지 않습니다.

47.1.9. API 매핑 사용자 정의

API 매핑의 다음 측면은 플러그인을 구성하여 사용자 지정할 수 있습니다.

  • 메서드 별칭 Cryostat-에서 별칭 구성 요소를 사용하여 API 메서드에 대한 추가 이름( aliases )을 정의할 수 있습니다. 자세한 내용은 47.3절. “메서드 별칭”의 내용을 참조하십시오.
  • Cryostat 옵션 Cryostat- Cryostat Options 구성 요소를 사용하여 기본값이 null 인 메서드 인수를 선언할 수 있습니다. 자세한 내용은 47.4절. “Cryostat 옵션”의 내용을 참조하십시오.
  • API 매핑이 구현되는 방식으로 인해 인수 이름 대체 Cryostat-에서 특정 API 클래스의 모든 메서드의 인수가 동일한 네임스페이스에 속합니다. 동일한 이름의 두 인수가 다른 유형으로 선언되면 충돌이 발생합니다. 이러한 이름 충돌을 방지하려면 대체 구성 요소를 사용하여 메서드 인수의 이름을 변경할 수 있습니다( URI에 표시됨). 자세한 내용은 47.5절. “인수 이름 하위”의 내용을 참조하십시오.
  • 인수를 제외하면 Java 인수를 URI 옵션에 매핑할 때 매핑에서 특정 인수를 제외해야 하는 경우가 있습니다. excludeConfigNames 요소 또는 excludeConfigTypes 요소를 지정하여 원하지 않는 인수를 필터링할 수 있습니다. 자세한 내용은 47.6절. “제외된 인수”의 내용을 참조하십시오.
  • 추가 옵션 즉, Java API의 일부가 아닌 추가 옵션을 정의할 수 있습니다. extraOptions 구성 요소를 사용하여 이 작업을 수행할 수 있습니다.

47.1.10. Javadoc 메타데이터 구성

특정 콘텐츠를 무시하거나 명시적으로 포함하도록 Javadoc 메타데이터를 필터링할 수 있습니다. 이 작업을 수행하는 방법에 대한 자세한 내용은 47.2절. “Javadoc 옵션” 을 참조하십시오.

47.1.11. 서명 파일 메타데이터 구성

Javadoc을 사용할 수 없는 경우 파일에 서명하여 필요한 매핑 메타데이터를 제공할 수 있습니다. fromSignatureFile 은 해당 서명 파일의 위치를 지정하는 데 사용됩니다. 특별한 옵션은 없습니다.

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

© 2024 Red Hat, Inc.