maven felix 플러그인을 사용하여 OSGi 번들을 만들었지 만, project1과 project2에 "com.example"패키지가 있다고 가정합니다. 또한 project2는 project1에 종속됩니다.Maven OSGi 번들
project2에서 패키지를 내 보내면 project1의 project2 및의 코드를 갖게됩니다. 이것은 저에게 정말로 이상한 행동입니다. OSGi가 어떻게 든 그것을 필요로하기 때문에 그러한 행동을 가능하게했다고 생각할 수있는 유일한 이유는 무엇입니까? (나는 이미 http://felix.apache.org/site/apache-felix-maven-bundle-plugin-bnd.html을 보았지만 이것을 끌 수있는 방법을 찾지 못하는 것 같습니다.)
두 개의 jar (A와 B)가 같은 패키지이지만 다른 클래스를 내보내고 세 번째 jar 그 패키지에 대한 의존성은 C가 A & B를 런타임에 모두 볼 수 있다고 가정합니다. 또는 OSGi는 항아리마다 다른 패키지가 필요합니까?
OSGi가이를 강제하지 않으면 어떻게이 "기능"을 끌 수 있습니까?
OSGi 이 인 경우, 그 이유는 무엇입니까?
UPDATE는
기독교 제공하는 대답은 다른 단지에 다른 패키지 OSGi의 요구 사항을 지 웁니다. 그러나 나는 아직도 내가 포함 된 "API"항아리가 펠릭스에 문제가 :
- com.example.api : 실제 인터페이스
- com.example : 팩토리 클래스, 유틸리티 클래스 ,. ..
그리고이 구현 패키지 :
- com.example.impl을
이제 felix로 구현 패키지를 빌드하고 "com.example.impl"을 내 보내면 실제로 "com.example.impl"의 모든 내용을 갖지만 어떤 이유로 든 "com.example"의 모든 클래스를 포함합니다 "(.api에있는 사람들이 아닙니다.) 내가 시도한 설정의 어떤 조합도 펠릭스가 어떤 이유로 "기본"패키지를 추가하는 것을 막지 못할 것입니다 ...
기본적으로 "impl"프로젝트의 결과 jar에 실제로 com.example 클래스가 있습니다. MyFactory는 api 패키지에 있습니다. 이것을 어떻게 막을 수 있습니까?
의견을 보내 주셔서 감사합니다. 이미 상당히 많은 부분이 정리되어 있지만, 원래의 질문에 계속 좌절감을주는 좀 더 구체적인 사용법을 추가했습니다. – nablex