A.2. Red Hat Fuse OSGi 프로젝트 설정

A.2.1. 개요

OSGi 번들을 빌드하기 위한 Maven 프로젝트는 간단한 단일 수준 프로젝트일 수 있습니다. 하위 프로젝트는 필요하지 않습니다. 그러나 다음을 수행해야 합니다.However, it does that you do the following:

  1. POM에 bundle 플러그인을 추가 합니다.
  2. Maven에서 결과를 OSGi 번들로 패키징하도록 지시 합니다.
참고

적절한 설정으로 프로젝트를 설정하는 데 사용할 수 있는 여러 Maven archetypes이 있습니다.

A.2.2. 디렉토리 구조

OSGi 번들을 구성하는 프로젝트는 단일 수준 프로젝트일 수 있습니다. 최상위 POM 파일과 src 폴더가 있어야만 합니다. 모든 Maven 프로젝트에서와 마찬가지로 src/java 폴더에 모든 Java 소스 코드를 배치하고 src/resources 폴더에 Java가 아닌 리소스를 배치합니다.

Java가 아닌 리소스에는 Spring 구성 파일, JBI 엔드포인트 구성 파일, WSDL 계약이 포함됩니다.

참고

Apache CXF, Apache Camel 또는 다른 Spring 구성된 빈을 사용하는 Red Hat Fuse OSGi 프로젝트에는 src/resources/META-INF/spring 폴더에 있는 beans.xml 파일도 포함되어 있습니다.

A.2.3. 번들 플러그인 추가

번들 플러그인을 사용하려면 먼저 Apache Felix에 종속 항목을 추가해야 합니다. 종속성을 추가한 후 POM의 플러그인 부분에 bundle 플러그인을 추가할 수 있습니다.

예 A.1. “POM에 OSGi 번들 플러그인 추가” 프로젝트에 번들 플러그인을 추가하는 데 필요한 POM 항목을 표시합니다.

예 A.1. POM에 OSGi 번들 플러그인 추가

...
<dependencies>
  <dependency>
    <groupId>org.apache.felix</groupId>
    <artifactId>org.osgi.core</artifactId>
    <version>1.0.0</version>
  </dependency>
...
</dependencies>
...
<build>
  <plugins>
    <plugin>
      <groupId>org.apache.felix</groupId>
      <artifactId>maven-bundle-plugin</artifactId>
      <configuration>
        <instructions>
          <Bundle-SymbolicName>${pom.artifactId}</Bundle-SymbolicName>
          <Import-Package>*,org.apache.camel.osgi</Import-Package>
          <Private-Package>org.apache.servicemix.examples.camel</Private-Package>
        </instructions>
      </configuration>
    </plugin>
  </plugins>
</build>
...

예 A.1. “POM에 OSGi 번들 플러그인 추가” 의 항목은 다음을 수행합니다.

Apache Felix에 대한 종속성 추가

프로젝트에 bundle 플러그인 추가

프로젝트의 아티팩트 ID를 번들의 기호 이름으로 사용하도록 플러그인을 구성합니다.

번들 클래스에서 가져온 모든 Java 패키지를 포함하도록 플러그인을 구성합니다. 또한 org.apache.camel.osgi 패키지도 가져옵니다.

나열된 클래스를 번들로 플러그인을 구성하지만 내보낸 패키지 목록에 포함하지 않도록 구성합니다.

참고

프로젝트의 요구 사항을 충족하도록 구성을 편집합니다.

번들 플러그인 구성에 대한 자세한 내용은 A.3절. “번들 플러그인 구성” 을 참조하십시오.

A.2.4. 번들 플러그인 활성화

Maven이 bundle 플러그인을 사용하도록 하려면 프로젝트의 결과를 번들로 패키징하도록 지시합니다. POM 파일의 packaging 요소를 번들로 설정하여 이 작업을 수행합니다.

A.2.5. 유용한 Maven archetypes

bundle 플러그인을 사용하도록 사전 구성된 프로젝트를 생성하는 데 사용할 수 있는 여러 Maven archetypes가 있습니다.

A.2.6. Spring OSGi archetype

Spring OSGi archetype은 다음과 같이 Spring DM을 사용하여 OSGi 프로젝트를 빌드하기 위한 일반 프로젝트를 생성합니다.

org.springframework.osgi/spring-bundle-osgi-archetype/1.1.2

다음 명령을 사용하여 archetype을 호출합니다.

mvn archetype:generate -DarchetypeGroupId=org.springframework.osgi -DarchetypeArtifactId=spring-osgi-bundle-archetype -DarchetypeVersion=1.1.2 -DgroupId=groupId -DartifactId=artifactId -Dversion=version

A.2.7. Apache CXF 코드 우선 archetype

Apache CXF 코드 우선 archetype은 다음과 같이 Java에서 서비스를 빌드하는 프로젝트를 생성합니다.

org.apache.servicemix.tooling/servicemix-osgi-cxf-code-first-archetype/2010.02.0-fuse-02-00

다음 명령을 사용하여 archetype을 호출합니다.

mvn archetype:generate -DarchetypeGroupId=org.apache.servicemix.tooling -DarchetypeArtifactId=servicemix-osgi-cxf-code-first-archetype -DarchetypeVersion=2010.02.0-fuse-02-00 -DgroupId=groupId -DartifactId=artifactId -Dversion=version

A.2.8. Apache CXF wsdl-first archetype

Apache CXF wsdl-first archetype은 다음과 같이 WSDL에서 서비스를 생성하는 프로젝트를 생성합니다.

org.apache.servicemix.tooling/servicemix-osgi-cxf-wsdl-first-archetype/2010.02.0-fuse-02-00

다음 명령을 사용하여 archetype을 호출합니다.

mvn archetype:generate -DarchetypeGroupId=org.apache.servicemix.tooling -DarchetypeArtifactId=servicemix-osgi-cxf-wsdl-first-archetype -DarchetypeVersion=2010.02.0-fuse-02-00 -DgroupId=groupId -DartifactId=artifactId -Dversion=version

A.2.9. Apache Camel archetype

Apache Camel archetype은 다음과 같이 Red Hat Fuse에 배포된 경로를 구축하기 위한 프로젝트를 생성합니다.

org.apache.servicemix.tooling/servicemix-osgi-camel-archetype/2010.02.0-fuse-02-00

다음 명령을 사용하여 archetype을 호출합니다.

mvn archetype:generate -DarchetypeGroupId=org.apache.servicemix.tooling -DarchetypeArtifactId=servicemix-osgi-camel-archetype -DarchetypeVersion=2010.02.0-fuse-02-00 -DgroupId=groupId -DartifactId=artifactId -Dversion=version