.classpath 및 .project-버전 제어에 체크인합니까?


87

종속성 트리에서 여러 모듈로 구성된 오픈 소스 Java 프로젝트를 실행하고 있습니다. 이러한 모든 모듈은 Subversion 저장소의 하위 디렉터리입니다. 우리 프로젝트를 처음 접하는 사람들을 위해 이클립스에서 모든 것을 수동으로 설정하는 것은 많은 작업입니다.

모든 개발자가 이클립스를 사용하는 것은 아닙니다. 그럼에도 불구하고 우리는 .classpath 및 .project 파일을 확인하여 초보자가 시작하는 것을 고려하고 있습니다. 좋은 생각인가요? 아니면 해당 파일에서 지속적인 충돌이 발생합니까? Eclipse에서 프로젝트를 쉽게 설정할 수있는 다른 방법이 있습니까?


답변:


65

확실히 그렇습니다. " 프로젝트 파일을 버전 관리하에 유지합니까? " 에서 말했듯이

"로드, 설정, 이동."

하지만 ... 이것은 빌드 경로가 상대 경로를 지원 하는 최근 Eclipse3.5 설정에서만 사실입니다 .

빌드 경로는 상대 경로를 지원합니다.


그리고 Eclipse3.6은 에서 경로 변수대한 상대 경로를 지원하므로 더 좋을 것 입니다 Linked Resources.

상대 경로가있는 경로 변수
(3.6M5 이후)


2
와우, 그들이 이것을 추가했다는 것을 몰랐습니다 ... 우리에게 약간의 슬픔
Uri

이 답변과 관련된 이미지가 오프라인 인 것 같습니다.
vkraemer

1
@vkraemer : 사실. 이제 두 사진을 복원했습니다. 첫 번째 사진은 archive.eclipse.org/eclipse/downloads/drops/R-3.5-200906111540/… 에서, 두 번째 사진 은 download.itemis.com/mirror/eclipse/R-3.6 에서 가져 왔습니다. -201006080911./... .
VonC

17

확실히 아니오-Subversion을 통해 프로젝트 파일을 배포하는 것은 일반적으로 끔찍한 생각입니다. 특히 누군가 이상한 방식으로 수정할 수 있기 때문입니다. 프로젝트 문서의 좋은 페이지가 훨씬 더 나은 아이디어입니다. 우리 프로젝트에는 또한 많은 모듈과 복잡한 설정이 있습니다. IntelliJ, Eclipse, NetBeans와 같은 각 포 퓰러 IDE에서 프로젝트를 시작하는 방법을 설명하는 confluence 페이지를 설정했습니다. Subversion의 README 파일에는 동일한 정보가 포함되어 있습니다.


31
동의 할 수 없습니다. 내 경험상 가능한 한 쉽게 체크 아웃 할 수 있도록 이러한 파일을 체크인하는 것이 좋습니다. 누군가 이상한 방식으로 변경할 수 있습니까? 누군가 이상한 방식으로 코드를 변경할 수 있습니다.
Arne Deutsch

Arne, 대답이 아니라 대답을해야합니다.
amarillion

5
모든 IDE의 프로젝트 파일은 실제로 어떤 프로젝트의 일부가 아닙니다. 배포하고 싶다면 제가 언급 한 기사에 첨부하십시오. 일반적으로 팀의 모든 사람이 repo의 파일을 수정할 수 있지만 모든 사람이 중요한 문서 노드 등에 새 파일을 첨부 할 수있는 것은 아닙니다. 누군가가 클래스 경로와 프로젝트 파일을 무시하고 그렇게해서는 안 될 때 커밋하는 것을 잊는 것은 매우 쉽습니다. 당신이 그들을 전복 상태로 유지하더라도-당신은 확실히 그들을 측면 어딘가에 보관해야합니다 ...
Bozhidar Batsov

8
-1, 더 이상 동의 할 수 없습니다. 프로젝트 설정은 프로젝트의 일상적인 작업 에서 중요한 부분입니다. 실수로 잘못된 설정을 확인하는 단점은 자동으로 모든 사람을 최신 상태로 유지하는 장점보다 훨씬 적습니다. 결국 언제든지 이전 버전으로 쉽게 돌아갈 수 있습니다.
Michael Borgwardt

7
모든 사람은 의견을 가질 권리가 있습니다. 사실 저는 이클립스 (또는 다른 IDE의) 프로젝트 시스템에 의존하는 프로젝트를 처음부터 만들지 않았습니다. Maven은 궁극적 인 프로젝트 이해 도구이며 IDE 특정 설정을 쓸모 없게 만듭니다. Btw 현재 설정에 문제가 있음을 발견하고 이전 개정으로 돌아가는 시간은 새 설정을 직접 조정하는 시간과 다를 가능성이 없습니다. 적어도 우리 회사에서는 더 큰 변경 후 사용자 개입이 필요한 경우 팀의 모든 구성원이 전자 메일을 통해 알림을받습니다.
Bozhidar Batsov

10

나는 반대 투표하지만 일반적으로 maven에서 이러한 파일을 생성하기 때문입니다.


m2e 당신을 위해 가장하지만 모든 것을 않습니다
Junchen 리우에게

6

내 경험상 순수하게 로컬 설정이 관련된 제한된 경우를 제외하고 모든 것이 소스 제어에 있어야합니다. 소스 제어의 법칙은 밀어 넣은 모든 것이 꺼내는 사람이 작동하도록 기대해야한다는 것입니다. 불행히도 이클립스는 종종 다음과 같은 일이 발생합니다 .classpath.

    <classpathentry kind="con" 
      path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.launching.macosx.MacOSXType/Java SE 7"/>

따라서 내 Mac에서는 이것이 작동하고 Mac의 누군가가 동일한 JRE를 가지고 있지만 다른 사람에게는 작동하지 않습니다.

또한이 문제를 해결하는 쉬운 방법이 없습니다. Eclipse는 항상 해당 파일을 추가합니다. lib 폴더에는 버전 관리에 관심이있는 타사 JAR이 있으므로 거기에 .classpath 파일이 있으므로 새 개발자가 가져올 필요가 없도록 그대로 둡니다. . 우리는 관리되는 시스템으로 이동하고 있지만 여전히 관리되고 관리되지 않는 종속성이 체크인되었습니다. 이는 모든 개발자가 두 개의 디렉토리가 .classpaths 에 있는지 확인하기 만하면된다는 것을 의미합니다 . 그러나 매번 가져올 때마다 JRE를 수정하고 커밋 할 때마다 .classpath를 변경하는 것보다 낫습니다.

Eclipse는 당신을 위해 다른 좋은 일을합니다. .project 파일은 일반적으로 인스턴스간에 동일하므로 포함합니다. 그러나 Eclipse의 소스 제어에 대한 가장 좋은 점은 구성 실행 설정입니다. 구성 실행 대화 상자의 "공통"탭에서 구성을 저장하여 디버그 및 실행의 즐겨 찾기 목록에 동료에게 표시되도록합니다. 저에게는 많은 .launch파일이 .settings디렉토리에 저장되므로 모두 사용할 수 있습니다.

그래서 나는 말합니다 : .settings디렉토리는 시작 구성을 위해 소스 제어로 들어갑니다 (* .prefs 제외)

.classpath 외출하다

.project 들어갑니다.


JRE / JVM의 실행 환경을 사용하는 경우에도 마찬가지입니까?
Mr_and_Mrs_D

5

새로운 사용자가 가능한 한 쉽게 시작할 수 있도록이 파일을 체크인합니다. 기껏해야 사용자는 프로젝트를 확인하고 추가 지식없이 실행할 수 있어야합니다. 이 파일의 경우 규칙은 프로젝트의 다른 파일과 동일합니다.주의해서 처리하십시오. 소스 코드에 절대 경로를 배치해서는 안되며 구성 파일에 있어야합니다.

프로젝트가 처음부터 실행되는 방식으로 파일을 체크인하면 파일을 변경해야하는 힘이별로 없어야합니다.


5

단일 개발자의 환경에 직접 연결할 수있는 절대 경로 및 기타 데이터가 포함되어 있지 않은 경우 파일을 Subversion으로 확인하는 것이 좋습니다.

파일에 절대 경로 등이 포함되어 있으면 README가 더 나은 선택이 될 것입니다.


2

예, 확실히 체크인하되 경로 종속성을 문서화하고 가능하면 절대 경로를 피하십시오.

체크인하지 않으면 프로젝트를 체크 아웃하는 사람은 모든 설정을 다시 만들어야하므로 성 가시고 오류가 발생할 가능성이 있습니다.

일부 복잡한 설정은 이러한 파일을 생성하는 스크립트로 더 잘 처리 할 수 ​​있지만 일반적으로 파일을 체크인하는 것이 좋습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.