특정 O/S 플랫폼에 대해 Eclipse .classpath 항목을 어떻게 지정합니까?

StackOverflow https://stackoverflow.com/questions/495264

  •  20-08-2019
  •  | 
  •  

문제

저는 팀의 일원으로 SWT 프로젝트를 진행하고 있습니다.Eclipse의 .classpath 파일이 버전 제어에 체크인되고 우리 컴퓨터에 다른 SWT 라이브러리가 포함되어 있기 때문에 우리는 지속적으로 서로의 빌드 환경을 파괴하고 있습니다.

마지막으로 커밋한 사람에 따라 .classpath 항목은 다음과 같습니다.

<classpathentry kind="lib" path="lib/swt/swt-win32.jar"/>

또는

<classpathentry kind="lib" path="lib/swt/swt-carbon.jar"/>

또는

<classpathentry kind="lib" path="lib/swt/swt-gtk.jar"/>

라이브러리는 상호 배타적인 것으로 보입니다.한 번에 모두 포함하고 SWT가 해결하도록 할 수는 없습니다.그래서 우리는 어떻게든 각 플랫폼에 대해 필터링해야 합니다...

누구든지 이 작업을 수행하는 방법에 대한 아이디어가 있습니까?나의 초기 아이디어는 이것을 자체 ".classpath-swt" 파일(VCS에서 무시됨)로 분할하고 Ant를 사용하여 자동 생성한 다음 기본 .classpath에 포함시키는 것이었지만 Eclipse는 분할을 지원하지 않는 것 같습니다. .classpath 파일.

현재 해결 방법은 실제로 종속성을 변경하지 않는 한 .classpath를 커밋하지 않는 것입니다. 그러나 이는 여전히 .classpath가 변경될 때마다 많은 사람들이 개발 환경을 수정해야 함을 의미합니다.

이 프로젝트에 대한 옵션이 아니기 때문에 "Eclipse를 사용하지 마십시오"가 아닌 한 어떤 제안이라도 대단히 감사하겠습니다. :)

도움이 되었습니까?

해결책

Eclipse에서는 클래스 경로 변수를 정의하여 .classpath를 동일하게 유지할 수 있지만 각 개발자는 플랫폼에 따라 Eclipse를 구성합니다.최소한 .classpath 파일의 버전을 지정할 수 있습니다.SWT jar를 저장하는 디렉토리 구조를 플랫폼별로 jar 이름이 변경되지 않는 디렉토리 구조로 변경해야 합니다.이 메뉴는 다음 위치에서 찾을 수 있습니다."창->환경 설정->Java->빌드 경로"

SWTJARDIRECTORY/
    WIN32/
        SWT.JAR
    CARBON/
        SWT.JAR
    GTK/
        SWT.JAR

전.

    SWT_PLATFORM="SWTJARDIRECTORY/GTK", set by developer in Eclipse

.classpath

    SWT_PLATFORM/SWT.JAR

다른 팁

이러한 라이브러리는 모든 프로젝트에 배치하는 대신 쉽게 식별할 수 있는 별도의 프로젝트에 있어야 합니다.

예:"00-swt-provider"라는 프로젝트를 생성하여(맨 위에 오도록) "00-swt-provider-carbon", "00-swt-provider-win32" 또는 "00-swt-provider" 중 하나를 참조하도록 합니다. -gtk".

둘 중 하나는 지정된 플랫폼에 적합한 기본 라이브러리를 내보내고 유일한 링크는 00-swt-provider에 있습니다.실제 프로젝트는 이 메타 프로젝트만 참조합니다.

우리는 내부적으로 이 변형을 사용합니다. 이는 우리에게 잘 작동합니다.

단순히 자신의 인스턴스를 구성하고 환경의 이 구성 요소에 대해 소스 제어에 보관하지 않는 것은 어떻습니까?

또는 각 환경에 대한 클래스 경로 파일을 다른 디렉터리와 개미 파일에 저장할 수도 있습니다.build-setup-env.xml 파일을 사용하면 올바른 환경을 복사하는 각 환경에 대해 하나의 대상을 가질 수 있습니다.소스 제어에 이 복사본을 보관하려면 업데이트될 때 다시 복사해야 합니다.

SWT는 다음과 같이 이를 수행합니다. ~ 아니다 .classpath 파일의 버전을 관리하지만 버전별로 운영 체제와 윈도우 시스템이 추가된 여러 개의 별도 .classpath_* 파일을 관리합니다..classpath_win32_win32.따라서 저장소에서 소스를 체크아웃할 때 적절한 클래스 경로 파일을 .classpath에 복사하고 프로젝트를 다시 컴파일해야 합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top