2008-08-26 18 views
11

우리는 플러그인 개발을 용이하게하기 위해 사용자 정의 클라이언트 - 서버 애플리케이션에 OSGi 런타임 (Equinox)을 내장했으며 지금까지는 큰 성과를 거두었습니다. 우리는 Eclipse를 사용하여 내장 된 매니페스트 편집기, 종속성 관리 및 내보내기 마법사로 인해 플러그인을 빌드했습니다. Eclipse를 관리자 빌드에 사용하면 Hudson을 통한 지속적인 통합에 도움이되지 않습니다.OSGi 빌드 의존성을 어떻게 관리 할 수 ​​있습니까?

우리는 다른 OSGi 번들에 의존하는 OSGi 번들을 가지고 있습니다. 커스텀 ANT 빌드에서 빌드 순서를 하드 코딩하는 것을 정말 싫어합니다. 우리는이 일을 과거 였고 꽤 끔찍했습니다. OSGi 종속성을 자동으로 해결하지 못한다면 OSGi 종속성을 쉽게 관리 할 수있는 빌드 도구가 있습니까? 이것을하는 방법에 대한 어떤 예가 있습니까?

설명 :

생성 된 빌드 스크립트는 Eclipse를 통해서만 사용할 수 있습니다. 수동으로 Eclipse를 실행해야합니다. 우리는 또한 Eclipse 빌드에 포함되지 않는 표준 타겟을 가지고 있는데 생성 된 파일을 수정하고 싶지는 않습니다. (내가 포함 할 수 있음을 알고 있지만 Eclipse gen 파일을 피하기를 원합니다. 함께)

여기 내 프로젝트 레이아웃입니다 :

/ 
-PluginA 
-PluginB 
-PluginC 
. 
. 
. 

이클립스 PDE를 사용하여, 각 플러그인은 매니페스트를 가지고 있지만, PDE로 더의 build.xml 나를 위해 것을하지 않는다. Hudson이있는 GUI 기반 프로세스를 자동화하기가 어렵습니다. 각 build를 만들기 위해 build.xml을 설정하고 싶습니다. 그러나 의존성이 있고 빌드 순서 문제가 있습니다. 이러한 문제는 Manifest 파일 (OSGi 가져 오기를 설명 함)에 의해 결정됩니다. 예를 들어, PluginC는 PluginA에 종속 된 PluginB에 의존합니다. 그것들은 올바른 순서로 만들어 져야합니다. 빌드 순서를 수동으로 제어 할 수 있다는 것을 알고 있으며 빌드 순서 종속성 관리를 자동화하는 데 도움이되는 도구를 찾고 있습니다.

+0

신고 서비스가 작동하지 않는 이유는 무엇입니까? – drozzy

답변

1

...

는 우리의 설치로 인해 네트워크 연결 및 타이밍의 부족으로 받는다는에 도움이되지 않았습니다. 오프라인 maven 설정이 있다는 것을 알고 있지만 시간이 너무 많이 주어졌습니다. 바라 건데 우리는 빌드 프로세스를 재구성 할 시간이있을 때 적절한 설정을 사용하게 될 것입니다.

해결 방법에는 Ant, BND 및 일부 사용자 지정 Ant 작업이 포함되었습니다. 다양한 번들 종속성은 수동으로 관리됩니다. 우리는 이미 Ant를 사용하고있었습니다. BND와 커스텀 태스크는 모두 그것을 묶었습니다. 사용자 정의 작업은 우리의 bnd/eclipse 프로젝트가 동기화되었는지 확인했습니다.

2

Buckminster을 사용합니다. 의존성 분석, 다양한 저장소에서 가져 오기, 제품 빌드 및 패키징을 담당하는 빌드 및 어셈블리 프레임 워크입니다.

Eclipse 도구 프로젝트입니다. PDE와 잘 통합됩니다.

이것은 우리가 RCP를 빌드하는 데 사용하는 모든 메타 데이터가 Buckminster가 해결하고 빌드하는 데 유용하다는 것을 의미합니다. 예를 들어, Manifest.MF, .product의 feature.xml 및 Require-Bundle 헤더.

이제 각 번들에 빌드 스크립트가 없습니다. 이제는 제품 하나당 하나의 빌드가 생겼습니다. Buckminster는 의존성 그래프를 보살 피습니다.

그들은 (Buckminster 팀이) 프로젝트 자체를 호스트하기 위해 허드슨을 사용하기 시작했지만 기존의 크루즈 컨트롤/개미 시스템을 사용하려면 약간의 노력이 필요했습니다. 나는 그들의 빌드 설정을 다운로드 할 수 있다고 믿는다.

상대적으로 어린시기 임에도 불구하고 우리는 정말 그것에 깊은 인상을 받았습니다.

우리는 또한 Pax-Construct을 조사했지만 Maven을 사용하고 싶지 않았습니다.

또한 우리는 단위 테스트 노력을 보완하기 위해 현재 Spring DM testing framework을보고 있습니다.

7

Maven2 도처에서; m2eclipse이라는 이클립스 플러그인을 사용하여 관리를 돕고, 정확하게 종속성 문제를 해결 한 다음 일부를 해결합니다. free online book as documentation 있습니다.

특히 많은 구성 요소를 번들로 제공하고 빌드 순서와 종속성을 알아 내려면 multi-module projects을 살펴보십시오.

chapter on the Eclipse integration도 있습니다.

그리고 그건 그냥 이클립스되고 메이븐, 옆은 OSGi에 대한 멋진 케이크를 얻을 :

  • Apache Felix BND Maven plugin 당신의 매니페스트를 자동 생성 또는 적어도 당신에게
  • PAX OPS4J project과 메이븐 도움이 될 것입니다 플러그인은 부트 스트랩 프로젝트, 실행기 제공 등에 큰 도움이 될 수 있습니다.

기본적으로 Maven 모듈 모델은 OSGi의 번들 모델에 완벽하게 들어 맞습니다. 우리는 3 년 넘게 Maven을 사용하여 수백 가지 번들로 여러 제품을 만들고 관리해 왔으며 훌륭합니다.

0

문제가 발생한 부분을 자세히 설명해 주실 수 있습니까? OSGi 번들 종속성을 언급합니다. 런타임 중에 있습니까? 컴파일 중입니까? 첫 번째 경우에는 선언적 서비스 (Declarative Services)를 고려해야합니다 (OSGi 스펙 참조).

0

우리는 Eclipse 기반 OSGi 번들/플러그인을 빌드하기 위해 허드슨과 PluginBuilder을 결합하여 사용합니다. 이는 플러그인을 빌드하기위한 Eclipse의 표준 PDE 프로세스를 기반으로합니다. 이것은 Eclipse를 컴파일러로 사용한다는 것을 의미합니다.

2

Seconding Maven2. 빌드를 위해 타이코 플러그인을 살펴보십시오. 이클립스의 JDT 컴파일러를 사용하므로 런타임에 Eclipse가 수행하는 것과 마찬가지로 컴파일시 OSGi 규칙을 모두 구현합니다.

또는 Apache Felix BND 플러그인도 인기있는 것 같습니다. 필자는 Maven 및 Eclipse 개발 환경을보다 긴밀하게 통합하기 때문에 Tycho를 선호합니다. 오래된 질문을 닫기

1

PDE 헤드리스 빌드. Eclipse에서 잘 설명되어 있습니다. Eclipse 플러그인을 빌드하고 명령 행을 통해이를 수행하려는 경우 Eclipse PDE 헤드리스 빌드가 필요합니다.

0

나는 받는다는에게 사용 3.0.2

MVN 생성 : 원형

select 252 - osgi-archetype 
mvn idea:idea 

는 치어의 번들 사용하기에이 짧은 예를 의존성을 추가

http://felix.apache.org/site/apache-felix-maven-bundle-plugin-bnd.html를 참조하십시오.XML

<Export-Package>org.foo.myproject.api</Export-Package> 

또는

<Import-Package>org.foo.myproject.api</Import-Package> 
메이븐은 인터넷 연결을 필요로하지 않습니다
0

! 그리스도를 위해서 -o 스위치를 사용하십시오.