2017-04-04 14 views
0

RCP4 애플리케이션을 구축 중입니다.RCP4 프로젝트에 비 osgi 항아리 추가

나는 a.jar 및 b.jar라는 두 개의 non-osgi jar를 가지고 있습니다. 두 항아리에는 모두 osgi가 아닌 종속성이 있습니다. a.jar의 종속성 중 하나는 b.jar입니다. 따라서 계층 구조는 다음과 같습니다

My application 
|--a.jar 
|----aDependency1.jar 
|----aDependency2.jar 
|----aDependencyN.jar 
|----b.jar 
|------bDependency1.jar 
|------bDependency2.jar 
|------bDependencyN.jar 

bDependencyN.jars의 일부는 aDependencyN.jars 의 다른 버전 (예는 평민 로깅-1.1.2 대 평민 로깅-1.0.4.jar입니다입니다 .jar)

내 RCP4 응용 프로그램에서 a.jar 및 b.jar을 직접 참조해야합니다. 내가 코드를 작성할 때 즉, 나는에 a.jar에서 패키지를 가져올 것입니다 만, b.jar)

가장 좋은 방법입니다

: 명령 줄을 통해 2.4 BND

  • 사용하는 모든 비를 설정하는 -osgi 항아리가 osgi 항아리에 들어갑니다. 그런 다음 대상 파일을 통해 모든 jar 파일을 프로젝트에 추가합니다.

  • "기존 JAR 아카이브에서 플러그인"을 만들고 a.jar 및 모든 종속성을 선택하고 "deployable plugin and fragment "a.with.libs.jar라고 불렀습니다. 나는 b.jar와 똑같이하고 b.with.libs.jar를 만든다. 그런 다음 대상 파일을 통해이 두 개의 새로운 jar 파일을 프로젝트에 추가합니다.

  • 새 프로젝트 "기존 JAR 아카이브에서 플러그인"을 만들고 a.jar 및 모든 종속성을 선택하고 b.jar 및 모두를 선택합니다. 그 종속성을 ab.with.libs.jar라고하는 "배치 가능한 플러그인 및 단편"으로 내 보냅니다. 그런 다음 대상 파일을 통해 프로젝트에 새 항아리를 추가하십시오.

  • 위의 제안보다 나은 접근 방법이 있습니까?

답변

0

하나의 옵션은 그들로부터 OSGi 번들을 타사 종속성을 관리하고 만들 수 (나는 또한 저자) bnd-platform을 사용하는 것입니다. Maven 리포지토리와 로컬 Jars에서 검색 한 두 종속성 모두에서 사용할 수 있습니다 (README 참조). Maven 종속성을 구성 할 때 전이 종속성도 포함됩니다. 후드 아래에서 그것은 bnd를 사용합니다. 필요한 경우 Jars의 래핑 방법을 사용자 정의 할 수도 있습니다. bnd-platform은 Gradle 용 플러그인입니다. this template으로 쉽게 시작할 수 있습니다. 종속성을 추가하고 프로젝트 README (번들 기호 이름, 버전)에 설명 된대로 구성을 제공하고 gradlew bundles을 실행하십시오. 생성 된 번들을 대상 플랫폼에 추가 할 수 있습니다. bnd-platform을 사용하여 p2 저장소/업데이트 사이트를 구축 할 수도 있습니다.

+0

안녕하세요. 응답 해 주셔서 감사합니다. 현재 프로젝트에서 Maven을 사용하지 않고 Gradle을 사용한 적이 한번도 없습니다. bnd 플랫폼 웹 사이트에 관한 문서는 좀 더 진보 된 것처럼 보이고 위의 예제를 반영하는 올바른 grad 파일을 어디에서 시작해야할지 모르겠습니다 (모든 로컬 항아리). – ekjcfn3902039

+0

모든 로컬 Jars (Maven 종속성이 아닌) 인 경우 bnd-platform은 전이 의존성을 자동으로 추가 할 수 없기 때문에 약간의 이점을 잃습니다. 위에서 언급 한 템플릿을 사용할 수있는 출발점으로, 로컬 종속성 섹션 만 있으면 Jars를 추가하기위한 문서에서 https://github.com/stempler/bnd-platform#local-dependencies를 추가 할 수 있습니다. – stempler