2014-11-17 3 views
0

Karaf 컨테이너에 여러 번들을 배포했습니다. 종속성 그라프는 그런 식으로번들을 다시 컴파일하거나 업로드하지 않고 Karaf 스위치 종속 번들 버전

A-1.0 
    /\ 
    / \ 
B-1.0 C-1.0 

모두 B 보일 수 있습니다 및 C 번들 내가 번들 A의 일부 인터페이스를 변경하는 것을 깨달았다 생산에 배포 한 후 번들 A. 의 최신 버전을 찾고 있습니다. 나는 번들 B만이 그 변화에 대해 알고 싶어. 번들 C는 그대로 있어야합니다. 그래프는 내 영어보다 낫다.

내가 같은 acheived 싶습니다 : 나는 궁금

A-1.1 A-1.0 
    |  | 
B-1.1 C-1.0 

더 나은 어쩌면 도움이 또는 어떤 수의 외부 구성 파일과 같은 것이 있습니다.

답변

2

필요 묶음 (일반적으로하지 말아야 함)을 사용하지 않는 한 번들은 번들에 의존하지 않습니다. 다른 패키지에 의존하는 패키지입니다. 그래서 나머지 대답은 번들 B와 C가 A에서 패키지를 가져 오는 것으로 가정 할 것입니다.

첫 번째 질문은 어떤 버전 범위를 가져 오나요?

둘 다 [1.0, 2]를 가져 오는 경우 (A에서 서비스를 사용하는 경우에는 매우 정상입니다) 설명하는 효과를 얻지 못합니다.

[1.0, 1.1]과 같이 C 가져 오기를 엄격한 범위로 만들면 시나리오가 작동합니다.

저는 왜 당신이 설명하는 것을하고 싶은지 궁금합니다. 시맨틱 버저 닝 (OSGi 백서에서 제안한대로)을 올바르게 적용한다면 번들 A의 1.0에서 1.1 로의 업데이트는 이전 버전과의 호환성이 있어야 함을 의미합니다. 따라서 B와 C는 A 버전 1.1을 아무런 문제없이 사용할 수 있습니다. 그것에 대해 좀 더 자세히 설명해 주시겠습니까?

+0

모든 번들은 동시에 개발됩니다. 주요 문제는 지금은 (외부 서비스가 그것에 의존하는) pacakge C를 만질 수 없다는 것입니다. 지금은 인터페이스에 새로운 메소드를 추가하고 이전 인터페이스를 deprecated 주석으로 표시했습니다. 그러나 경우에 따라 변경 사항이 더 복잡 할 수 있습니다 (A-1.1은 패키지 C-1.0에서 처리하지 않지만 C-1.1에서 처리하는 논리입니다). 나는 C-1.0 패키지가 현재 패키지 A-1.0으로 가고 있다는 것을 컨테이너에 알리기 위해 외부 설정을 사용할 수 있는지 궁금하다. 가까운 장래에 나는 pacakge A-1.1을 사용하도록 리팩토링 될 패키지 C-1.1의 새로운 버전을 제공 할 것입니다. – Damian0o