B.3. 사용자 정의 Karaf 어셈블리

Karaf 서버 어셈블리를 만드는 권장 방법은 karaf-maven-plugin 에서 제공하는 karaf:assembly 목표를 사용하는 것입니다. 이렇게 하면 프로젝트의 pom.xml 파일의 Maven 종속성에서 서버를 어셈블합니다. karaf-maven-plugin 구성에 지정된 번들(또는 기능)과 pom.xml 의 < dependencies > 섹션에 지정된 종속성은 사용자 지정된 karaf 어셈블리로 들어갈 수 있습니다.

  • kar의 경우

    kar 유형의 종속 항목은 시작(scope=compile), 부팅(scope=runtime) 또는 karaf-maven-plugin에 설치된 (scope=provided) kars로 추가됩니다. kars는 작업 디렉터리(target/assembly)에 압축되지 않으며 기능 XML은 추가 기능 리포지토리(지정된 kar 단계와 동일)로 검색하고 사용됩니다.

  • features.xml의 경우

    기능 분류자가 있는 종속 항목은 karaf-maven-plugin에 시작(scope=compile), 부팅(scope=runtime) 또는 설치(scope=provided) 리포지토리로 사용됩니다. kar에 있는 기능 리포지토리를 명시적으로 추가할 필요가 없습니다.

  • scap 및 bundle의 경우

    bundle 또는 piece 유형의 종속 항목은 시작(scope=compile), 부팅(scope=runtime) 또는 karaf-maven-plugin에 설치된 (scope=provided) 번들로 사용됩니다.

B.3.1. Karaf:assembly 목표

karaf-maven-plugin 에서 제공하는 karaf:assembly 목표를 사용하여 Karaf 서버 어셈블리를 만들 수 있습니다. 이 목표는 프로젝트 POM의 Maven 종속성에서 마이크로 서비스 스타일 서버 어셈블리를 어셈블합니다. OpenShift 프로젝트의 Fuse에서는 karaf:assembly 목표를 Maven 설치 단계에 바인딩하는 것이 좋습니다. 프로젝트는 번들 패키징을 사용하며 프로젝트 자체는 bootBundles 요소 내에 나열하여 Karaf 컨테이너에 설치됩니다.

참고

etc/startup.properties 로 들어갈 예정이므로 karaf 프레임워크 기능과 같은 필수 요소만 포함하면 이 단계에서 karaf 기능 서비스가 완전히 시작되지 않습니다. 부팅 단계를 수행하기 위해 다른 요소를 지연시킵니다.

예제

다음 예제는 빠른 시작에 일반적인 Maven 구성을 표시합니다.

<plugin>
  <groupId>org.jboss.redhat-fuse</groupId>
  <artifactId>karaf-maven-plugin</artifactId>
  <version>${fuse.version}</version>
  <extensions>true</extensions>
  <executions>
    <execution>
      <id>karaf-assembly</id>
      <goals>
        <goal>assembly</goal>
      </goals>
      <phase>install</phase>
    </execution>
  </executions>
  <configuration>

    <karafVersion>{karafMavenPluginVersion}</karafVersion>
    <useReferenceUrls>true</useReferenceUrls>
    <archiveTarGz>false</archiveTarGz>
    <includeBuildOutputDirectory>false</includeBuildOutputDirectory>
    <startupFeatures>
      <feature>karaf-framework</feature>
            </startupFeatures>
            <bootFeatures>
      <feature>shell</feature>
      <feature>jaas</feature>
      <feature>aries-blueprint</feature>
      <feature>camel-blueprint</feature>
      <feature>fabric8-karaf-blueprint</feature>
      <feature>fabric8-karaf-checks</feature>
    </bootFeatures>
    <bootBundles>
      <bundle>mvn:${project.groupId}/${project.artifactId}/${project.version}</bundle>
    </bootBundles>
  </configuration>
</plugin>