2010-06-10 4 views
0

타사 라이브러리를 사용하는 응용 프로그램을 작성했습니다. 그런 다음이 패키지를 maven-assembly-plugin (타사 jar를 포함한 모든 종속성이있는 jar 파일 생성)을 사용하여 실행 가능한 jar 파일로 패키지화했습니다.Eclipse PDE에서 사용할 항아리를 작성 하시겠습니까?

다음 이클립스에서 시작할 수 있도록이 jar를 PDE 프로젝트에 추가해야합니다. 하지만이 작업을하기 위해서는 패키지 병에 이미있는 PDE 프로젝트에 thirs-party 종속성 중 일부를 추가해야합니다. 그래서 나는 중복 의존성을 얻는다. 이 문제를 피하는 방법에 대한 아이디어가 있습니까? 또는 이것이 올바르게 수행 된 방법을 설명하는 문서에 제안 하시겠습니까?

답변

1

빌드해야합니다. jar는 OSGi 번들입니다. 따라서 플러그인 ID와 버전 번호가있는 필수 manifest.mf가 들어 있습니다 (사실은 변경되지 않고 jar 파일은 실행 가능 상태로 유지됩니다). 코드를 다른 플러그인/번들에서도 사용할 수있게하려면 export-packages 옵션을 추가해야합니다.

그런 다음 PDE 프로젝트에서 사용하는 대상 플랫폼에이 jar를 설치할 수 있으므로 (기본 설정에서 대상 플랫폼 검색) ID로 다른 플러그인에서 사용할 수있게됩니다 (종속성으로 추가 할 수 있음).).

이렇게하면 최소한 하나의 플러그인에 jar이 필요하면로드되지만로드되지는 않습니다.

0

다른 항아리를 항아리에 넣는 것이 좋지 않은 생각입니다. 그러나 그 방법을 유지하고 싶다면, 하나의 빌드에서 두 개의 jar 파일을 생성하는 방법 : 종속 파일이있는 완전한 파일과 PDE에서 사용하는 간단한 파일 (어셈블리 플러그인에서 다중 실행을 사용하는 것)

0

지금 받는다는 - 번들 플러그인을 사용하고 있습니다 :

 <plugin> 
      <groupId>org.apache.felix</groupId> 
      <artifactId>maven-bundle-plugin</artifactId> 
      <version>1.4.0</version> 
      <extensions>true</extensions> 
      <configuration> 
       <instructions> 
        <Bundle-SymbolicName>${pom.groupId}.${pom.artifactId}</Bundle-SymbolicName> 
        <Bundle-Name>${pom.name}</Bundle-Name> 
        <Bundle-Version>${pom.version}</Bundle-Version> 
        <Bundle-Activator>org.wso2.mbp.sample01.Activator</Bundle-Activator> 
        <Private-Package>org.wso2.mbp.sample01</Private-Package> 
       </instructions> 
      </configuration> 
     </plugin> 

http://felix.apache.org/site/apache-felix-maven-bundle-plugin-bnd.html

번들을 구축 할 수 있습니다. 하지만 나는 번들 플러그인을 사용하여 내가 사용하는 maven-assembly-plugin을 가진 jar 빌드를위한 MANIFEST 파일을 생성한다. :

관련 문제