2012-08-24 6 views
1

다음 시나리오를 고려하십시오. pluginA, pluginB 및 pluginC의 세 가지 플러그인이 있습니다. PluginA는 pluginB에 의존하여 다시 export한다. PluginC는 pluginB를 사용하고자하며 pluginA에 의존합니다. 종속성 pluginC -> pluginA -> pluginB가 있으므로 pluginC는 종속성으로 pluginB를 추가해야합니까?플러그인 종속성

나는 그것이 없어야한다고 생각합니다. 그러나 직접 종속성 pluginC -> pluginB를 추가하면 모든 것이 올바르게 작동하지만 종속성을 제거하고 pluginC -> pluginA를 그대로두면 pluginB의 클래스를 찾을 수 없다는 오류가 표시됩니다. 어떤 상황에서 이러한 오류가 발생합니까? 플러그인 유형 (UI 대 비 UI)에 따라 다릅니 까? 작업을 수행

감사 알렉스

답변

3

이적 종속성 (A는 B에 따라 C에 따라 다르다); 방금 간단한 케이스를 테스트 해 보았습니다. PluginB가 PluginC가 사용하려고하는 패키지를 내보내는 지 확인하십시오. 그게 문제가 아니라면 오류에 대한 자세한 내용으로 질문을 업데이트 할 수 있습니다.

일반적으로 덜 명시 적이며 의도하지 않은 종속성 (또는 적어도 알지 못하는 종속성)을 초래할 수 있으므로 재 내보내기 기능을 사용하지 마십시오. 대신, 모든 종속성을 명시 적으로 (PluginC는 PluginB에 직접 종속 됨) 또는 가져온 패키지를 대신 사용합니다 (패키지가 어떤 플러그인에서 왔는지 상관하지 않습니다. 어딘가에서 사용할 수 있어야합니다). 더 유연합니다.

+0

감사합니다. 왜냐하면 내가 의존성 C -> A -> B를 만들고 싶어하는 이유는 다른 플러그인들이 플러그인 C를 사용하기를 원하기 때문이다. 그래서 나의 플러그인 A는 다른 플러그인들이 사용할 수있는 의존성을 가진 일반적인 플러그인이다. Commom Plugin이 XML Utils Plugin과 IO Plugin에 의존한다고 가정 해 보겠습니다. 플러그인 X, Y, Z는 XML Utils와 IO Plugins를 사용하기 위해 Common Plugin을 종속물로 추가하기 만하면됩니다. 따라서 전체 재수출 접근법. 필자는 원하지 않는 의존성이 어떻게이 설정에 누출 될 수 있는지 이해합니다. X, Y, Z 플러그인을 XML에 의존하게 만들기 Utils 및 IO 플러그인은 유지 관리 문제를 추가합니다. –

+0

어쨌든 일반적으로 작동합니다. 차이를 만드는 부분을 생략해야한다고 생각합니다. 전이 의존성을 가진 3 개의 간단한 플러그인을 설정하여 작동하는지 확인해 보았습니까? –

+0

예, 물론입니다. 내 코드에서 전이 종속성을 사용하고 있습니다 (Common Plugin과 함께). 그러나이 경우 작동하지 않는 원인이 있습니다. 나는 문제가 무엇인지보기 위해 좀 더 깊이 파헤쳐 볼 것 같아. –

관련 문제