2011-03-25 4 views
0

스프링 지원으로 간단한 이클립스 플러그인을 만들 때 문제가 있습니다.Spring 지원 Eclipse 플러그인 생성 방법은 무엇입니까?

나의 주요 목표는 아파치 Camel 프레임 워크를 사용하여 멀티 모듈 이클립스 플러그인 프로젝트를 개발하는 것이다. 그래서 Spring을 IoC 컨테이너 (Camel은 Spring DSL이 좋음)로 사용하고 Apache Maven을 빌드 도구로 사용하려고합니다.

이제 Hello goal과 같은 간단한 Maven 프로젝트 (HelloWorld와 같은)를 만들면 Spring의 ApplicationContext를 bundle-context.xml 파일로 만들고 거기에서 간단한 의존성을 얻을 수있다. 그것을 콘솔에 인쇄하십시오.

나는 spring-osgi-bundle-archetype archetype으로 시작했다. maven-bundle-plugin을 사용하려고하는데 성공하지 못했습니다. pom.xml 파일에서 현재, 나는 다음과 같은 한 구성은 :

 <plugin> 
      <groupId>org.apache.felix</groupId> 
      <artifactId>maven-bundle-plugin</artifactId> 
      <version>2.3.4</version> 
      <extensions>true</extensions> 
      <configuration> 
       <manifestLocation>META-INF</manifestLocation> 
       <ignoreMissingArtifacts>true</ignoreMissingArtifacts> 
       <instructions> 
        <Bundle-SymbolicName>${bundle.symbolicName}; singleton:=true</Bundle-SymbolicName> 
        <Bundle-Version>${pom.version}</Bundle-Version> 
        <!-- | assume public classes are in the top package, and private classes 
         are under ".internal" --> 

        <Export-Package>!${bundle.namespace}.internal.*,${bundle.namespace}.*;version="${pom.version}"</Export-Package> 
        <Private-Package>${bundle.namespace}.internal.*</Private-Package> 

        <Import-Package>.,*;resolution:=optional</Import-Package> 
        <Bundle-Activator>${bundle.namespace}.Activator</Bundle-Activator> 
        <Bundle-ActivationPolicy>lazy</Bundle-ActivationPolicy> 
        <Require-Bundle>org.eclipse.ui,org.eclipse.core.runtime</Require-Bundle> 
        <Bundle-RequiredExecutionEnvironment>JavaSE-1.6</Bundle-RequiredExecutionEnvironment> 
        <Embed-Dependency>*;scope=compile|runtime;inline=false</Embed-Dependency> 
        <Embed-Directory>target/dependency</Embed-Directory> 
        <Embed-StripGroup>true</Embed-StripGroup> 
        <Embed-Transitive>true</Embed-Transitive> 
       </instructions> 
      </configuration> 
     </plugin> 

수입 패키지의 많은이 구성 나오긴의 MANIFEST.MF 생성, pom.xml 파일에서 모든 종속성을 대상/의존성에 내장 및 매니페스트의 Bundle-에 선언되어있다 Classpath.

그러나 플러그인이 여전히 작동하지 않습니다

NoClassDefFound 같은 오류가 : org.springframework.context.ApplicationContext

또는

사용 가능한 번들 수출 패키지 'org.springframework.context' (이 패키지를 Import-Package에 추가하려고하면).

그러나이 종속성이있는 아카이브 (spring-context-3.0.5-RELEASE.jar)는 target/dependency와 Bundle-Classpath에 있습니다.

OSGi 기술에 익숙하지 않아 메이븐 (Maven) 또는 OSGi와 관련된 문제인지 이해할 수 없습니다.

누구나 Spring 지원 기능을 갖춘 Eclipse 플러그인 생성 경험이 있습니까? 모든 조언과 의견을 환영합니다. 또한 Spring을 지원하는 일부 OpenSource Eclipse 플러그인을 보는 것이 좋습니다.

+0

죄송합니다. 이것은 제 잘못입니다. 필자는 Eclipse PDE을 사용하여 플러그인을 테스트했으며 maven 패키지 패키지를 사용하지 않았습니다. – ENargit

+0

게다가 Apache Camel 지원과 관련된 주요 목표 인 Spring 모듈을 임베드하는 것은 좋지 않습니다. 이 프레임 워크는 일반 Spring 라이브러리가있는 OSGi 환경에서는 작동하지 않습니다. 문서에 따르면 Spring Dynamic Modules 또는 Eclipse Gemini Blueprint shold가 대신 사용됩니다. – ENargit

답변

1

해결 방법을 통해 예제를 얻을 깨진 것은 코드 다음의 pom.xml에 추가했다 Eclipse PDE에서 Run/Debug 플러그인 이전의 mvn package.

1

나는 이클립스 프로젝트에 대한 첫 번째 빌드를 제안하므로, 플러그인 도구로 이클립스의 모든 도구를 사용할 수 있으므로 tycho을 참조하고 페이지 끝 부분에 예제를 참조하십시오.

편집 :

 <plugin> 
      <artifactId>maven-dependency-plugin</artifactId> 
      <executions> 
       <execution> 
        <id>copy-dependencies</id> 
        <phase>package</phase> 
        <goals> 
         <goal>copy-dependencies</goal> 
        </goals> 
       </execution> 
      </executions> 
     </plugin> 

및 호출 다음 티코 페이지의 링크가 github insteat, 그 데모 폴더

관련 문제