2016-07-26 16 views
0

개발 중에 번들 내의 특정 파일 내용을 변경하고 다시 컴파일/번들 재설치없이 응용 프로그램에서 변경된 파일 내용을 볼 수 있어야합니다. 응용 프로그램의 내용이 필요할 때마다 파일이 Bundle.getEntry()에 의해 읽혀집니다.bndtools/felix 환경에서 번들 리소스를 직접 변경하는 방법

Eclipse PDE와 Equinox를 사용하면 Eclipse 환경에서 시작된 OSGi 프레임 워크가 프로젝트 폴더를 압축 해제 번들로 취급하기 때문에 간단하게 종료됩니다. 프로젝트 폴더의 파일 변경 사항은 응용 프로그램이 자원 내용을 읽을 때마다 반영됩니다.

제대로 이해하면 bndtools는 자원의 변경이 감지 될 때마다 번들을 항상 다시 패키지합니다. 그러나 수백 개의 리소스 파일이있는 프로젝트의 경우 너무 많은 시간이 걸립니다. Eclipse PDE에서와 비슷한 동작을 얻을 수 있습니까? 아파치 펠릭스에서 선호 되는가? IDE에서 응용 프로그램을 시작한 경우에만 개발/디버깅 중에 만 이러한 기능이 필요합니다. 프로덕션 환경에서는 리소스가 절대로 변경되지 않습니다.

구체적으로 말하자면, 우리의 응용 프로그램에는 여러 CSS로 컴파일되는 많은 파일이 많이 있습니다. CSS는 LESS 파일이 변경된 직후에 생성됩니다. 이것은 gulp 및 node.js가 수행합니다. 페이지가 다시로드되면 즉시 CSS 파일을 변경해야합니다. 우리는 OSGi HTTP 서비스를 사용하고 있지 않습니다.

답변

0

아니요.

Bndtools 패키지가 너무 오래 걸리면 번들이 너무 커서 모듈화를 시도해야합니다.

+0

꾸러미를 정리하는 시간을 줄이기 위해 번들을 재배치한다고 가정 해보십시오. 여전히 - "번들 핫 대체"옵션이 있습니까? 즉, 실행중인 응용 프로그램이 번들을 다시 설치하지 않고 변경된 파일에 액세스합니까? – st33v3

+0

Bndtools에서 시작하면 yes입니다. 번들은 변경 될 때마다 최신 업데이트됩니다. –

0

번들 리소스를 사용하여 개발 한 일부 애플리케이션이 있는데 제대로 작동합니다. (이 모델을 사용하는 OSGi enRoute을 참조하십시오.) 번들이 그렇게 크지 않은 한 1 초 미만으로 구축되었습니다. 그래서 가장 좋은 조언은 코드/리소스를 여러 모듈로 나눌 수 있는지 알아 보는 것입니다. 작을수록 빌드가 빠릅니다.

이것이 실제로 문제가되는데, 필자는 이것이 필사적 인 시도라고 생각합니다. 물론 getEntry 코드를 변경하여 파일 시스템을 살펴볼 수도 있습니다. 개발 모드에서는 (config admin을 통해 설정), 거기에서 가져올 수 있습니다.