2013-05-15 2 views
1

우리 제품에서 사용하는 다양한 유틸리티 기능을 갖춘 내부 p2 사이트가 있습니다. 방금 RAP 용 유틸리티 기능이있는 새로운 기능과 함께 새로운 플러그인 세트를 추가했습니다 (반면 "이전"기능은 RCP/SWT 용입니다).단일 p2 사이트의 다른 대상 플랫폼을 기반으로 한 기능

물건을 컴파일하기 위해 두 개의 다른 대상 플랫폼을 사용합니다 (하나는 RCP 용이고 다른 하나는 RAP 용). 플러그인과 기능에서 이들을 참조하십시오. 내가 부모 리딩의 일반적인 두 개의 층 그래서 나는 모듈을 구성했다 : - 모든 일반적인 티코와 메이븐 예약

  • ... parent.rcp와 -

    • ... 부모 컨테이너를 모든 플러그인에 대한 에/따라 인은 RCP/SWT 기능을 사용 - 또한 RCP/SWT는
    • 기능을 포함하도록 대상 플랫폼을 설정 ... parent.rap - RAP

    없음 문제에 대한 동일. 모든 것이 컴파일되고 모든 테스트가 실행됩니다.

    UI 기능 (예 : OSGi 테스트 유틸리티)에 의존하지 않으므로 두 기능 (RCP 및 RAP)에 기존 플러그인 중 일부가 있습니다. 문제도 없습니다.

    하지만 ... 두 피처 (RCP 및 RAP)가있는 단일 p2 업데이트 사이트를 만들려고 할 때 문제가 발생합니다. 업데이트 프로젝트가 RCP 대상 플랫폼과 연관되기 때문에

    [INFO] Resolving dependencies of MavenProject: com.rcpcompany:com.rcpcompany.uibindings.updatesite:3.0.0-SNAPSHOT @ /Git/ui-bindings/com.rcpcompany.uibindings.updatesite/pom.xml 
    [INFO] Cannot complete the request. Generating details. 
    [INFO] Cannot complete the request. Generating details. 
    [INFO] {osgi.ws=gtk, osgi.os=linux, osgi.arch=x86, org.eclipse.update.install.features=true} 
    [ERROR] Cannot resolve project dependencies: 
    [ERROR] Software being installed: com.rcpcompany.uibindings.updatesite raw:3.0.0.'SNAPSHOT'/format(n[.n=0;[.n=0;[-S]]]):3.0.0-SNAPSHOT 
    [ERROR] Missing requirement: com.rcpcompany.utils.rap.feature.feature.group 1.0.0.qualifier requires 'org.eclipse.rap.ui.forms 0.0.0' but it could not be found 
    [ERROR] Cannot satisfy dependency: com.rcpcompany.uibindings.updatesite raw:3.0.0.'SNAPSHOT'/format(n[.n=0;[.n=0;[-S]]]):3.0.0-SNAPSHOT depends on: com.rcpcompany.utils.rap.feature.feature.group [1.0.0,1.0.1) 
    [ERROR] 
    [ERROR] Internal error: java.lang.RuntimeException: "No solution found because the problem is unsatisfiable.": ["Unable to satisfy dependency from com.rcpcompany.utils.rap.feature.feature.group 1.0.0.qualifier to org.eclipse.rap.rwt.osgi [2.0.0,2.1.0).", "Unable to satisfy dependency from com.rcpcompany.utils.rap.feature.feature.group 1.0.0.qualifier to org.eclipse.rap.rwt.testfixture [2.0.0,2.1.0).", "Unable to satisfy dependency from com.rcpcompany.utils.rap.feature.feature.group 1.0.0.qualifier to org.eclipse.rap.ui.forms 0.0.0.", "No solution found because the problem is unsatisfiable."] -> [Help 1] 
        .... 
    

    , 내가 티코 (또는 P2)가 RAP의 대상 플랫폼에서 플러그 인을 발견하고 불평 할 수 있도록 위의 메시지를 이해 : 나는 다음과 같은 메시지가 .

    (I 두 개의 서로 다른 업데이트 사이트를 만들 경우, 모든 것이 잘 작동하지만 나는 그것을 원하지 않는다 : - /)

    어떻게 티코 두 기능을 업데이트 사이트를 구축 설득 할 수 있습니까? 가능한 모든 종속성을 가진 결합 된 대상 플랫폼을 만들어야합니까, 아니면 다른 방법이 있습니까?

  • 답변

    2

    명백한 것으로 시작해 보겠습니다. p2 저장소로 집계하려는 것은 target platform이어야합니다. 왜냐하면 빌드는 대상 플랫폼에만있는 것들을 사용할 수 있기 때문입니다. 그러나 이것이 당신의 문제인 것처럼 보이지 않습니다. 당신이 모으고 자하는 것들의 의존성에 다소 문제가 있습니다.

    Currently의 경우에도 집계 된 콘텐츠의 종속성이 대상 플랫폼에 있어야합니다. 두 부모의 구성을 병합하여 공동 RCP & RAP 대상 플랫폼을 만들 수 있어야합니다.

    불행히도, 아직 모든 것이 아닙니다. 현재 모든 기능을 한 번에 설치할 수 있어야합니다. 이것은 Tycho가 의존성 해결 중에 시뮬레이트하는 것입니다 : 그것은 모듈의 빌드 결과로 p2 설치를 가장합니다. 종속성 해결 중에 "한 번에 설치할 수 없습니다."라는 오류가 표시되면 target-platform-configuration 스위치 allowConflictingDependenciestrue으로 설정할 수 있습니다. 이 스위치는 원래 (현재 사용되지 않음) eclipse-update-site 패키지 유형의 사용 사례를 정확하게 지원하기 위해 도입되었습니다. 비록 그것이 작동하는지 확실하지 않다 eclipse-repository.

    작동하지 않는 경우 두 개의 별도 p2 리포지토리를 만들고 추가 (사후) 빌드 단계에서 결합 할 수 있습니다.웹 서버에 두 개의 p2 저장소를 놓고 소위 복합 저장소를 사용하여 논리적으로 그룹화하거나 p2 mirror tool을 사용하여 두 저장소를 함께 복사 ("미러링") 할 수 있습니다.

    +0

    답변 해 주셔서 감사합니다. 지금은 두 개의 서로 다른 p2 사이트를 만들고 tycho-p2-extras-plugin의 미러 목표와 함께 병합하는 솔루션을 선택했습니다. 이것은 잘 작동합니다. 유일한 점은 두 사이트의 카테고리를 동기화 상태로 유지해야한다는 것입니다.하지만 변경 사항이 거의 없으므로 괜찮습니다. –