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
입니다.artifactId 가 groupId 의 마지막 섹션과 같은 경우 groupId 가 사용됩니다.
예를 들어 POM에서 그룹 ID와 아티팩트 ID를
org.apache.maven:maven
로 지정하는 경우 번들의 심볼릭 이름은org.apache.maven
입니다.artifactId 가 groupId 의 마지막 섹션으로 시작되면 해당 부분이 제거됩니다.
예를 들어 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-SNAPSHOT
는 4.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. 더 알아보기
번들 플러그인 구성에 대한 자세한 내용은 다음을 참조하십시오.