2012-10-01 2 views
2

내 호스트 플러그인은 다른 플러그인에 선택적 종속성을 선언합니다. 내 호스트 플러그인에 대한 단편 작성시 선택적으로 필요한 플러그인은 Tycho에서 찾을 수 없습니다. 이는 선택적 종속성의 클래스를 분석 할 수 없기 때문에 컴파일 오류가 발생 함을 의미합니다.프래그먼트에서 호스트의 선택적 종속성을 사용할 수 없습니다.

호스트 플러그인에서 선택적 플래그를 제거하면 Tycho 빌드가 정상적으로 작동합니다. Maven 3.0.4와 Tycho 0.15.0을 사용하고 있습니다.

답변

4

정말 Tycho의 버그이거나 의도적으로 설계된 버그 인 경우 아직 결정되지 않았습니다.

관찰 가능한 행동으로 배경 인입니다. Tycho는 번들 설치시 p2가 수행하는 것과 같은 방법으로 종속성 분석을 수행하려고합니다. 번들에 선택적 종속성을 선언하면 해당 번들은 p2에 의해 설치되지 않습니다 (다른 번들 또는 기능에 해당 번들에 대한 선택적 종속성이없는 경우). 따라서이 규칙에 따라 Tycho는 종속성 분석 및 클래스 경로 계산 중이 선택적 종속성을 고려하지 않습니다. 값 require

  • , 컴파일에 필요한 처리중인 현재 번들의 모든 옵션 의존성 :

    그러나, (target-platform-configuration의 구성 옵션 dependency-resolution/optionalDependencies)를 기본 P2 동작에서 벗어날 수있는 스위치가있다 시각. 이것이 보통 원하는 값이므로 이 기본값 인입니다.

  • 값이 ignore 인 경우 컴파일시 현재 번들의 모든 선택적 종속성이 무시됩니다.

이 특수 처리는 현재 묶음의 선택적 종속성에만 적용되며 종속성 체인의 다른 묶음에는 적용되지 않습니다. 호스트 번들은 현재 다른 종속성으로 취급됩니다. 단편을 작성할 때 특별히 다룰 수 있습니다.

당신은 해결에 대한 다음과 같은 옵션이 있습니다

  • 은 또한 조각의 매니페스트에 옵션 종속성을 추가. 가장 쉬운 방법은 텍스트 편집기를 사용하는 것입니다. 엄밀히 말하자면, 이것은 올바른 일입니다. 조각은 실제로 자체 의존성을 선언하고 다른 곳의 선언에 의존하지 않아야합니다. 하지만 PDE가 그렇게 할 것을 요구하지 않으므로 Tycho가해야하는지 의문입니다.
  • jars.extra.classpath option in the build.properties을 통해 프래그먼트에 명시 적 컴파일 시간 종속성을 추가하십시오.
+0

변경하려는 Tycho 동작이 마음에 들면 [Tycho issue tracker] (https://bugs.eclipse.org/bugs/enter_bug.cgi?product=Tycho)에서 제안해야합니다. . – oberlies

+0

좋은 설명이지만, 제 생각에는 타이코의 행동이 이클립스의 행동과 다르다면 그것은 나쁜 사용 성과 중복 된 구성입니다. 따라서 나는 https : //bugs.eclipse라는 버그를 만들었다.org/bugs/show_bug.cgi? id = 391116 –

-1

해결 방법이 있습니다. 호스트 플러그인에서 선택적 플러그인을 제거하고 매니페스트 편집기를 통해 프래그먼트에 추가했습니다. 그 후 나는 그것을 호스트 플러그인에 읽어 들였고 다시 옵션으로 선언했다. (플러그인이 이미 호스트 플러그인에 선언 된 경우 매니페스트 편집기의 추가 버튼을 통해 해당 플러그인을 볼 수 없습니다.) 하지만 이것은 타이코의 버그라고 생각합니다. 선택적 종속성은 eclipse에서와 같이 조각에서도 사용할 수 있어야합니다.

관련 문제