A.3. 번들 플러그인 구성
A.3.1. 개요
번들 플러그인에는 작동하는 데 정보가 거의 필요하지 않습니다. 모든 필수 속성은 기본 설정을 사용하여 유효한 OSGi 번들을 생성합니다.
기본값만 사용하여 유효한 번들을 생성할 수 있지만 일부 값을 수정해야 합니다. 플러그인의 instructions
요소 내에 대부분의 속성을 지정할 수 있습니다.
A.3.2. 구성 속성
일반적으로 사용되는 일부 구성 속성은 다음과 같습니다.
A.3.3. 번들의 심볼릭 이름 설정
기본적으로 번들 플러그인은 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
요소에 Bundle-Version
자식을 추가합니다.
예 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
목록은 기본 패키지
또는 .
impl.internal
을 포함하는 패키지를 제외하고 로컬 Java 소스 코드의 모든 패키지( src/main/java
아래)로 채워집니다.
플러그인 구성에서 Private-Package
요소를 사용하고 내보낼 패키지 목록을 지정하지 않는 경우 기본 동작에는 번들의 Private-Package
요소에 나열된 패키지만 포함됩니다. 패키지를 내보내지 않습니다.
기본 동작으로 인해 패키지가 매우 크고 비공개로 유지해야 하는 패키지를 내보낼 수 있습니다. 내보낸 패키지 목록을 변경하려면 플러그인의 instructions
요소에 Export-Package
자식을 추가할 수 있습니다.
Export-Package
요소는 번들에 포함할 패키지 목록을 지정하고 내보낼 패키지 목록을 지정합니다. 패키지 이름은 *
와일드카드 기호를 사용하여 지정할 수 있습니다. 예를 들어 com.fuse.demo.*
항목에는 com.fuse.demo
로 시작하는 프로젝트의 클래스 경로에 있는 모든 패키지가 포함되어 있습니다.
제외할 패키지를 지정할 수 있습니다 ! !
항목을 접두사로 지정합니다. 예를 들어 !com.fuse.demo.private
항목은 com.fuse.demo.private
패키지를 제외합니다.
패키지를 제외할 때 목록의 항목 순서가 중요합니다. 목록은 처음부터 순서대로 처리되며 후속 일치하지 않는 항목은 무시됩니다.
예를 들어 com.fuse.demo 패키지를 제외하고 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
요소와 유사하게 작동합니다. 번들 플러그인은 목록을 사용하여 번들에 포함할 프로젝트의 클래스 경로의 모든 클래스를 찾습니다. 이러한 패키지는 번들에 패키지되지만 내보내지 않습니다( 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. 더 많은 정보
번들 플러그인 구성에 대한 자세한 내용은 다음을 참조하십시오.