A.3. 번들 플러그인 구성

A.3.1. 개요

번들 플러그인에는 기능하기 위해 정보가 거의 필요하지 않습니다. 모든 필수 속성은 기본 설정을 사용하여 유효한 OSGi 번들을 생성합니다.

기본값만 사용하여 유효한 번들을 생성할 수 있지만 일부 값을 수정할 수도 있습니다. 플러그인의 instructions 요소 내부에서 대부분의 속성을 지정할 수 있습니다.

A.3.2. 구성 속성

일반적으로 사용되는 구성 속성 중 일부는 다음과 같습니다.

A.3.3. 번들의 심볼릭 이름 설정

기본적으로 bundle 플러그인은 Bundle-SymbolicName 속성 값을 groupId + "." + artifactId 로 설정합니다.

  • groupId 에 하나의 섹션만 있는 경우 클래스가 있는 첫 번째 패키지 이름이 반환됩니다.

    예를 들어 Id 그룹이 commons-logging:commons-logging 이면 번들의 심볼릭 이름은 org.apache.commons.logging 입니다.

  • artifactIdgroupId 의 마지막 섹션과 같은 경우 groupId 가 사용됩니다.

    예를 들어 POM에서 그룹 ID와 아티팩트 ID를 org.apache.maven:maven 로 지정하는 경우 번들의 심볼릭 이름은 org.apache.maven 입니다.

  • artifactIdgroupId 의 마지막 섹션으로 시작되면 해당 부분이 제거됩니다.

    예를 들어 POM에서 그룹 ID와 아티팩트 ID를 org.apache.maven:maven-core 로 지정하는 경우 번들의 심볼릭 이름은 org.apache.maven.core 입니다.

번들의 심볼릭 이름에 대한 자체 값을 지정하려면 예 A.2. “번들의 심볼릭 이름 설정” 과 같이 플러그인의 instructions 요소에 Bundle-SymbolicName 하위 항목을 추가합니다.

예 A.2. 번들의 심볼릭 이름 설정

<plugin>
  <groupId>org.apache.felix</groupId>
  <artifactId>maven-bundle-plugin</artifactId>
  <configuration>
   <instructions>
     <Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName>
     ...
    </instructions>
  </configuration>
</plugin>

A.3.4. 번들 이름 설정

기본적으로 번들 이름은 ${project.name} 으로 설정됩니다.

번들 이름에 대한 자체 값을 지정하려면 예 A.3. “번들 이름 설정” 과 같이 플러그인의 instructions 요소에 Bundle-Name 하위를 추가합니다.

예 A.3. 번들 이름 설정

<plugin>
  <groupId>org.apache.felix</groupId>
  <artifactId>maven-bundle-plugin</artifactId>
  <configuration>
   <instructions>
     <Bundle-Name>JoeFred</Bundle-Name>
     ...
    </instructions>
  </configuration>
</plugin>

A.3.5. 번들 버전 설정

기본적으로 번들 버전은 ${project.version} 으로 설정됩니다. 모든 대시(-)는 점(.)으로 교체되고 숫자는 최대 4자리까지 채워집니다. 예를 들어 4.2-SNAPSHOT4.2.0.SNAPSHOT 가 됩니다.

번들 버전에 대한 자체 값을 지정하려면 예 A.4. “번들 버전 설정” 에서와 같이 번들 버전 하위를 플러그인의 instructions 요소에 추가합니다.

예 A.4. 번들 버전 설정

<plugin>
  <groupId>org.apache.felix</groupId>
  <artifactId>maven-bundle-plugin</artifactId>
  <configuration>
   <instructions>
     <Bundle-Version>1.0.3.1</Bundle-Version>
     ...
    </instructions>
  </configuration>
</plugin>

A.3.6. 내보낸 패키지 지정

기본적으로 OSGi 매니페스트의 Export-Package 목록은 기본 패키지, .. 및 .internal 이 포함된 패키지를 제외하고 로컬 Java 소스 코드의 모든 패키지로 채워집니다.

중요

플러그인 구성에서 Private-Package 요소를 사용하고 내보낼 패키지 목록을 지정하지 않으면 기본 동작은 번들의 Private-Package 요소에 나열된 패키지만 포함합니다. 내보낸 패키지가 없습니다.

기본 동작은 매우 큰 패키지로 발생하며 비공개로 유지해야 하는 패키지를 내보낼 수 있습니다. 내보낸 패키지 목록을 변경하려면 플러그인의 instructions 요소에 Export-Package 하위를 추가할 수 있습니다.

Export-Package 요소는 번들에 포함할 패키지 목록을 지정하고 내보낼 패키지 목록을 지정합니다. 패키지 이름은 * 와일드카드 기호를 사용하여 지정할 수 있습니다. 예를 들어 com.fuse.demo.* 항목에 com.fuse.demo.*로 시작하는 프로젝트의 classpath의 모든 패키지가 포함되어 있습니다.

항목을 접두사로 지정할 패키지를 지정할 수 있습니다 !. 예를 들어 !com.fuse.demo.private 항목은 com.fuse.demo.private 패키지를 제외합니다.

패키지를 제외할 때 목록의 항목 순서가 중요합니다. 목록은 처음부터 순서대로 처리되며 이후의 충돌 항목은 무시됩니다.

예를 들어 com.fuse.demo.private 패키지를 제외한 com.fuse.demo.demo로 시작하는 모든 패키지를 포함하려면 다음을 사용하여 패키지를 나열하십시오.

!com.fuse.demo.private,com.fuse.demo.*

그러나 com.fuse.demo.*,!com.fuse.demo.private 를 사용하여 패키지를 나열하는 경우 첫 번째 패턴과 일치하므로 번들에 com.fuse.demo.private 이 포함됩니다.

A.3.7. 개인 패키지 지정

내보내 지 않고 번들에 포함할 패키지 목록을 지정하려면 번들 플러그인 구성에 Private-Package 명령을 추가할 수 있습니다. 기본적으로 Private-Package 명령을 지정하지 않으면 로컬 Java 소스의 모든 패키지가 번들에 포함됩니다.

중요

패키지가 Private-Package 요소 및 Export-Package 요소 둘 다의 항목과 일치하는 경우 Export-Package 요소가 우선합니다. 패키지가 번들에 추가되고 내보내집니다.

Private-Package 요소는 번들에 포함할 패키지 목록을 지정하는 데 사용되는 Export-Package 요소와 유사하게 작동합니다. bundle 플러그인은 목록을 사용하여 번들에 포함할 프로젝트의 classpath에서 모든 클래스를 찾습니다. 이러한 패키지는 번들에 패키지되지만 내보내지지 않습니다( Export-Package 명령어에서도 선택하지 않는 한).

예 A.5. “번들에 개인 패키지 포함” 번들에 개인 패키지를 포함하는 구성을 보여줍니다.

예 A.5. 번들에 개인 패키지 포함

<plugin>
  <groupId>org.apache.felix</groupId>
  <artifactId>maven-bundle-plugin</artifactId>
  <configuration>
   <instructions>
     <Private-Package>org.apache.cxf.wsdlFirst.impl</Private-Package>
     ...
    </instructions>
  </configuration>
</plugin>

A.3.8. 가져온 패키지 지정

기본적으로 번들 플러그인은 OSGi 매니페스트의 Import-Package 속성을 번들 콘텐츠로 참조하는 모든 패키지 목록으로 채웁니다.

기본 동작은 일반적으로 대부분의 프로젝트에 충분하지만 목록에 자동으로 추가되지 않는 패키지를 가져오려는 인스턴스를 찾을 수 있습니다. 기본 동작으로 인해 원치 않는 패키지를 가져올 수도 있습니다.

번들에서 가져올 패키지 목록을 지정하려면 플러그인의 instructions 요소에 Import-Package 하위 항목을 추가합니다. 패키지 목록의 구문은 Export-Package 요소 및 Private-Package 요소에 대해 동일합니다.

중요

Import-Package 요소를 사용하는 경우 플러그인은 번들의 콘텐츠를 자동으로 검사하여 필요한 가져오기가 있는지 여부를 확인하지 않습니다. 번들의 콘텐츠를 스캔하려면 패키지 목록에 * 를 마지막 항목으로 배치해야 합니다.

예 A.6. “번들에서 가져온 패키지 지정” 번들에서 가져온 패키지를 지정하기 위한 구성을 표시합니다.

예 A.6. 번들에서 가져온 패키지 지정

<plugin>
  <groupId>org.apache.felix</groupId>
  <artifactId>maven-bundle-plugin</artifactId>
  <configuration>
   <instructions>
     <Import-Package>javax.jws, javax.wsdl, org.apache.cxf.bus, org.apache.cxf.bus.spring, org.apache.cxf.bus.resource, org.apache.cxf.configuration.spring, org.apache.cxf.resource, org.springframework.beans.factory.config, * </Import-Package>
     ...
   </instructions>
  </configuration>
</plugin>

A.3.9. 더 알아보기

번들 플러그인 구성에 대한 자세한 내용은 다음을 참조하십시오.