2012-05-14 8 views
3

(설명을 위해 편집) (비 OSGi 프레임 응용 프로그램)Gradle을 수없는 OSGi 번들

내 (비은 OSGi) 응용 프로그램 빌드가 Gradle을에, 나는 매우에서 업그레이드하려고 Jersey (1.1.4.1)의 이전 버전은 훨씬 새로운 버전 (1.12?)으로 업그레이드되었습니다. 나는 OSGi 사용에 대해 아무 것도 모르는 척하지. 나는에 ($JERSEY_VERSION 세트에 "1.12"로) 내 Gradle을 종속성을 가리킬 때 :

[group: 'com.sun.jersey', name: 'jersey-server', version: "$JERSEY_VERSION"]

가 내 Gradle을로 저지 - 서버 1.12.jar 다운로드는 "번들"디렉토리 대신에 따라 캐시 종속성 정상적인 "jars"디렉토리를 찾은 다음 Gradle은 classpath에이 jar를 포함하지 않는 것처럼 보입니다. 대신 "jars"하위 디렉토리 아래에있을 것입니다.

POM에 OSGi 지원 병으로 표시되어 있기 때문에 "번들"아래에 있다는 것을 발견했습니다. 나는 우리 프로젝트에 OSGi-ify를 원할 것이라고 생각하지 않는다. 나는 이전 버전의 Jersey에 붙어 있습니까, 아니면 Jersey jar를보기 위해 Gradle을 얻기 위해 할 수있는 것이 있습니까? 나는 이 아니라 가능하면 파일을 로컬 repo에 수동으로 복사하는 것이 바람직하지만, 작업에 따라 달라지면 Gradle의 종속성 관리 기능에 의존합니다.

답변

0

'어리석은 감시 : 1.1.4.1에서 1.12로 이동하면 POM 종속성이 변경되어 jersey-core.jar이 더 이상 내재적으로 가져 오지 않게되었습니다. jersey-core.jar을 명시 적으로 추가해야했습니다. 문제는 jersey-server.jar이 번들로 임포트된다는 사실을 가정했지만 실제로 jersey-core.jar에 있던 클래스에 대해 ClassNotFoundException을 얻고있었습니다.

0

OSGi 번들은 추가 매니페스트 항목이있는 일반 병입니다. 다른 의존성과 마찬가지로 비 OSGi 프로젝트에서 사용할 수 있어야합니다. 캐시의 번들 디렉토리에있는 것이 문제입니까?

+0

예, gradle은 기본적으로이 파일을 찾지 못하는 것 같습니다. 내가보기 엔 거기에 gradle을 구성 할 수있는 방법이 있는지 모르겠습니다. 나는 지금까지 gradle 문서 웹 페이지에 그러한 조언을 찾을 수 없었습니다. 필요한 경우 수동으로 jar를 대신 로컬 저장소에 다운로드 할 수 있지만 그렇게하지 않는 것이 좋습니다. –