2014-11-20 8 views
1

jar와 모든 의존성 (약 20 개의 다른 jar)을 래핑하는 번들을 만들고 내 자신의 인터페이스를 노출하려고합니다. 전체 종속성을 포함하는 "봉인 된 구성 요소"를 만들고 싶기 때문에 모든 종속성에 대한 번들을 만들고 싶지 않습니다. 마지막 줄이 문제되고 (이것은 단지 샘플이 현실 세계에서 번들 - 클래스 경로에서 약 20 항목이 있습니다 ...입니다) Bundle-ClassPath에서 Private-Package 항목을 만들지 않으려면 어떻게해야합니까?

Bundle-Version: 0.0.0.${tstamp} 
Export-Package: \ 
    pub 
Include-Resource: lib=lib/ 
Bundle-ClassPath: .,lib/ant-1.9.3.jar 

처럼

문제를 보여주는 샘플 BND 파일이 보인다 . Include-Resource 항목은 포장 된 항아리를 빨아 들여 그 모든 종속성을 묶음에 넣으면 효과가 있습니다. 그러나 모든 jar를 Bundle-ClassPath에 추가하면 bnd가 Private-Package에 추가합니다. 일반적으로 나는 bnd 파일이 커지면서 포함 된 jar 파일에 패키지가 너무 많아서 bndtools가 파일을 생성하려고 시도하는 것을 제외하고는 상관하지 않을 것입니다.

개인용 패키지를 손으로 작성하여 bnd 파일에 넣으려고했지만 bnd로 덮어 쓰면됩니다.

+0

아니오 ... 이것은 Java 언어 문제점이 아닌 bnd/OSGI 문제점입니다. –

+0

은 http://stackoverflow.com/questions/16936310/how-to-handle-import-package-entries-which-come-from-jars-on-the-bundle-classpat에 무료로 제공됩니다. –

답변

1

나는 왜 Private-Package에 대해 걱정하는지 잘 모르겠습니다. OSGi 프레임 워크에는 아무런 의미가 없습니다. 그것은 단지 나쁜 일입니다. 매니페스트에 표시하지 않으려면 bnd 파일에

-removeheaders: Private-Package 

을 추가하면됩니다.

+0

나는 그것에 대해 걱정하지 않습니다. , bndtools는 과 함께 실패합니다. "내 보낸 패키지 업데이트 : ca.privacyanalytics.anonymization.gate"중에 내부 오류가 발생했습니다. GC 오버 헤드 한도가 개를 초과하는 것으로 추정됩니다. bnd 명령 줄 도구가 없으므로 bndtools 버그처럼 보입니다. –

+0

버그가 bithtools 용 github에 기록되었습니다. –