2012-11-07 3 views
11

이전에는 파일 시스템에 번들과 기능이 있으며 '디렉토리'위치가있는 대상 정의 파일을 통해 Eclipse에서 사용할 수있게되었습니다. 이러한 방식으로 Eclipse의 내보내기 마법사에서 쉽게 사용할 수있었습니다.Tycho 빌드에서 타사 번들을 포함하는 디렉토리를 사용하는 방법

이제 제 3 자 종속성이있는 Tycho를 사용하여 eclipse-plugin을 만들려고합니다. javax.vecmathorg.apache.commons.math.

내가 아는 바로는 Tycho 빌드에서 종속성을 얻는 가장 좋은 방법은 p2 저장소를 사용하는 것입니다. 그래서 Eclipse 번들에 하나를 사용하고 있습니다. 그러나 제 3 자 번들에는 사용할 수있는 p2 저장소가없는 것으로 보입니다.

제 질문은 : 어떻게하면 쉽게 JAR (vecmath, commons-math)을 P2 저장소로 가져올 수 있습니까?

나는 Tycho와 함께 p2 저장소를 만들 수 있다고 생각했지만 Tycho에서 제 3 자 번들에 액세스 할 수 없을 때 어떻게해야합니까? 대상 정의를 사용하려고 시도했지만 Tycho는 디렉토리 또는 설치가 아닌 p2 저장소에 대한 링크 만 지원합니다. 그렇다면 Maven/Tycho 빌드에서 제 3 자 종속성을 사용하는 다른 방법이 있습니까?

답변

0

질문에 따라 타사 종속성은 이미 번들입니다. 이것은 좋은 것입니다 – 남은 것은 번들에 대한 p2 메타 데이터를 생성하는 것입니다.

Features and Bundles Publisher application을 통해 쉽게 수행 할 수 있습니다. 결과는 p2 저장소입니다. 분명히 Tycho 빌드를 실행하기 위해 모든 개발자가 로컬로 수행해야하는 작업을 원하지 않으므로 게시자 응용 프로그램의 결과를 웹 서버에 저장해야합니다. 그런 다음 프로젝트의 대상 파일에서 http URL을 통해 번들을 참조하십시오.

+0

그것은 가장 쉽고 빠른 방법으로 p2 repo를 만드는 것이 었습니다. 감사합니다 여러분. – Timo

+4

나는 동의하지 않는다. 사이트를 수동으로 생성해야하고 jar가 번들이 아닌 경우 직접 번들로 묶어야합니다. 그 모든 것은 평범하고 성가 시며 p2-maven-plugin (아래에 언급 됨)을 사용하여 쉽게 자동화 할 수 있습니다. 필자는 p2-maven-plugin의 저자이며 "Features and Bundles Publisher Application"을 사용하는 것이 정말 번거롭기 때문에 코딩했습니다. p2-maven-plugin을 시도해 보면 다른 어떤 것보다 쉽습니다. https://github.com/reficio/p2-maven-plugin –

+0

그래, p2-maven-plugin이 최상의 솔루션 인 것처럼 보입니다. . Eclipse/RCP 프로젝트에서 타사 종속성을 처리하는 것은 정말 어렵습니다. p2-maven-plugin은 목록을 어딘가에 유지하고 CI 빌드에서 p2 업데이트 사이트를 게시하여 모든 타이코 빌드에서 사용할 수 있도록이 고통을 크게 줄일 수 있습니다. – Kris

11

몇 가지 다른 옵션 ...

P2 플러그인은

사용 p2-maven-plugin 번들로 모든 비 OSGi 프레임 종속성을 포장하고, P2 저장소를 만들 수 있습니다.

나는 p2-maven-plugin을 시도하지 않았다. (현재 프로젝트를 만들 때 존재하지 않았다.) 구현은 타이코 (tycho)를 기반으로하지만 타이코 플러그인만으로는 문제를 해결할 수있는보다 편리한 방법을 찾을 수 있습니다.

번들 플러그인

사용 maven-bundle-plugin로 비 OSGi 프레임 의존성 (의존성 당 하나의 래퍼 POM), 및 저장소에 설치합니다. 제 생각에 평론은 이미 의존성이기 때문에 그냥 vecmath를 감쌀 필요가 있습니다. 그런 다음 타이코 기반 pom 파일의 <dependencies>에 이러한 종속성을 나열 할 수 있습니다.

이 방법은 프로젝트를 빌드하기 위해 p2 저장소를 설정할 필요가 없다는 장점이 있습니다. 단점은 번들 프로젝트의 종속성을 관리하는 것이 더 이상 MANIFEST.MF 파일을 수정하는 경우가 아니라는 점입니다. 또한 pom도 업데이트해야 할 수도 있습니다.

번들 플러그인 및 타이코

당신이 OSGi 번들로 의존성을 포장에 번들 플러그인 접근 방식을 사용하는 경우, 여전히 어쨌든 그 의존성을위한 P2 저장소를 설정하는 것이 유용 할 수도 있습니다 단순화로 Eclipse PDE에서 대상 플랫폼 설정.

이렇게하려면 새 타이코 기반 프로젝트를 만들어 p2 저장소에 종속성을 수집합니다. 즉, 이미 번들 된 종속성을 비 OSGi 종속성의 래핑 된 버전과 함께 수집 할 수 있습니다.이렇게하면 p2 저장소를 만드는 프로젝트는 pom에 래핑 된 종속성을 나열하고 번들 프로젝트는 해당 poms의 종속성을 나열하지 않고 p2 저장소를 사용할 수 있습니다.

이것은 내가 사용하고있는 방법입니다. 특히 eclipse-feature 프로젝트를 사용하여 모든 타사 종속성을 포함하는 기능을 정의합니다. 또한 패키징 플러그인에 구성 옵션을 true으로 설정하여 대상 디렉토리에 p2 저장소를 작성합니다. 이 기능은 기존 Eclipse 인스턴스에 설치할 수 있으므로 현재 Eclipse 플랫폼을 대상 플랫폼으로 쉽게 사용할 수 있습니다. 또한 tycho 빌드의 다른 곳 (예 : 코드)이나 Eclipse .target 파일의 저장소로 사용할 수있는 p2 저장소로 사용할 수도 있습니다.

eclipse-feature은 Tycho 0.13.0에서 가장 적합한 포장 유형 인 것으로 보입니다. 최신 버전에는보다 적절한 포장 유형이있을 수 있습니다.

+0

이 질문에 대한 대답 : http://stackoverflow.com/q/29664505/1523648 – oberlies

1

의 P2의 repos에 제 3 자 번들 항아리를 찾을 수있는 좋은 장소가

http://download.eclipse.org/tools/orbit/downloads/

commons.math가에있는 일식 궤도에게 있습니다.

당신의 제 3 자 OSGi 번들은 P2의 환매 특약에서 사용할 수 없지만 같은

http://search.maven.org/

당신이 티코의 pomDependency를 사용할 수있는 받는다는의 repo에있는 경우 = 고려 스위치 :

http://wiki.eclipse.org/Tycho/How_Tos/Dependency_on_pom-first_artifacts

+0

몇 분 전에 이미 궤도를 찾았습니다. 정말 편리합니다. 다른 조언은 흥미 롭다. 고마워. – Timo