2013-10-04 7 views
0

Eclipse 플러그인을 개발 중이며 SpringSource에서 호스팅되는 Jersey OSGI 번들을 활용하고자하지만 일단 번들을 가져 오면 소비되지 않습니다. 내 질문은 POM 또는 MANIFEST에서 Jersey 번들을 종속성으로 사용하도록 선언하려면 어떻게해야합니까?Eclipse 플러그인 프로젝트가 OSGI 번들 종속성을 사용하지 않음

내 프로젝트는 간단한 업데이트 사이트, 플러그인을 포함하는 기능 및 플러그인 자체로 구성됩니다.이 플러그인은 모두 "초보자 용 예제로 Eclipse 4 플러그인 개발"에서 작성되었습니다. 나는 대상 플랫폼 정보와 다른 프로젝트를 모듈로 보유하고있는 부모 POM과 함께 빌드 도구로 Tycho를 사용하고 있습니다.

내 부모 POM은 다음과 같습니다 :

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 

    <groupId>com.inin.testing.eclipse</groupId> 
    <artifactId>com.inin.testing.eclipse.parent</artifactId> 
    <version>1.0.0-SNAPSHOT</version> 
    <packaging>pom</packaging> 

    <properties> 
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
     <tycho-version>0.18.1</tycho-version> 
     <eclipse>http://download.eclipse.org/releases/kepler</eclipse> 
    </properties> 

    <modules> 
     <module>com.inin.testing.eclipse.update</module> 
     <module>com.inin.testing.eclipse.feature.testcase</module> 
     <module>com.inin.testing.eclipse.plugin.tcdb</module> 
    </modules> 

    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.eclipse.tycho</groupId> 
       <artifactId>tycho-maven-plugin</artifactId> 
       <version>${tycho-version}</version> 
       <extensions>true</extensions> 
      </plugin> 

      <plugin> 
       <groupId>org.eclipse.tycho</groupId> 
       <artifactId>target-platform-configuration</artifactId> 
       <version>${tycho-version}</version> 
       <configuration> 
        <resolver>p2</resolver> 
        <pomDependencies>consider</pomDependencies> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 

    <repositories> 
     <repository> 
      <id>kepler</id> 
      <layout>p2</layout> 
      <url>${eclipse}</url> 
     </repository> 
     <repository> 
      <id>com.springsource.repository.bundles.release</id> 
      <name>SpringSource Enterprise Bundle Repository - SpringSource Bundle Releases</name> 
      <url>http://repository.springsource.com/maven/bundles/release</url> 
     </repository> 
     <repository> 
      <id>com.springsource.repository.bundles.external</id> 
      <name>SpringSource Enterprise Bundle Repository - External Bundle Releases</name> 
      <url>http://repository.springsource.com/maven/bundles/external</url> 
     </repository> 
    </repositories> 

    <dependencies> 
     <dependency> 
      <groupId>junit</groupId> 
      <artifactId>junit</artifactId> 
      <version>3.8.1</version> 
      <scope>test</scope> 
     </dependency> 
     <dependency> 
      <groupId>org.eclipse.jdt</groupId> 
      <artifactId>core</artifactId> 
      <version>3.3.0-v_771</version> 
     </dependency> 

     <dependency> 
      <groupId>com.sun.jersey</groupId> 
      <artifactId>com.springsource.com.sun.jersey</artifactId> 
      <version>1.0.0</version> 
     </dependency> 
    </dependencies> 
</project> 

플러그인 POM은 다음과 같습니다 : 스프링 소스에 주어진

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 

    <groupId>com.inin.testing.eclipse</groupId> 
    <artifactId>com.inin.testing.eclipse.update</artifactId> 
    <version>1.0.1-SNAPSHOT</version> 
    <packaging>eclipse-repository</packaging> 

    <parent> 
     <groupId>com.inin.testing.eclipse</groupId> 
     <artifactId>com.inin.testing.eclipse.parent</artifactId> 
     <version>1.0.0-SNAPSHOT</version> 
    </parent> 
</project> 

나는 또한 플러그인 프로젝트에 매니페스트 항목을 추가 :

Import-Bundle: com.springsource.com.sun.jersey;version="[1.0.0,1.0.0]" 

나는 tycho로 빌드 할 때 오류는 없지만 있어야하는 클래스를 사용할 수는 없습니다. Jersey 번들과 함께 가져 왔습니다.

저지 종속성을 상위 POM에서 하위 POM으로 이동하려고 시도했습니다. 아마도 해결책은 너무 분명해서 나는 그것을 볼 수 없거나 완전히 잘못된 경로에 있습니다. 어떤 도움이라도 좋을 것입니다. 감사!

답변

0

작은 실수 하나를 제외하면이 모든 것이 매우 잘 보입니다. OSGi 번들 매니페스트 헤더는 Import-Bundle 대신 Require-Bundle이어야합니다.

Eclipse PDE 도구를 사용하여 번들 매니페스트를 편집하는 것이 좋습니다. 편집기를 사용하여 피할 수있는 매니페스트 파일 형식에는 여러 가지주의 사항이 있습니다. 특별한 경우에, Import-Bundle 헤더가 굵은 체로 인쇄되지 않았다는 것을 알았을 것입니다. 이는 OSGi 또는 Eclipse가 정의한 알려진 헤더 중 하나가 아님을 의미합니다.