버전 관리에 속하는 Eclipse 파일은 무엇입니까?


242

소스를 제외하고 소스 제어에 적합한 Eclipse 파일은 무엇입니까?

내 프로젝트에서 특히 궁금합니다.

.metadata / *
project-dir / .project
project-dir / .classpath
project-dir / .settings / *

이것에 의존하는 것이 있으면 지침을 설명하십시오.

답변:


175

메타 데이터는 소스 제어에서 관리하지 않아야합니다. 그들은 주로 관련된 데이터를 포함 하여 작업 공간을.

유일한 예외는 .launchXML 파일 (런처 정의)입니다.

그들은에서 발견된다

[eclipse-workspace]\.metadata\.plugins\org.eclipse.debug.core\.launches

프로젝트 디렉토리로 복사해야합니다. 프로젝트를 새로 고치면 해당 구성이 "구성 실행"대화 상자에 표시됩니다.

이렇게하면 해당 시작 매개 변수 파일을 SCM으로 관리 할 수도 있습니다.

(경고 : 음주 옵션의 선택을 취소 "관련 리소스 삭제 삭제 구성" 에서 실행 / 시작 / 실행 구성의 기본 설정 패널 : 그것은에 공통 다시 가져올하기 위해 프로젝트를 소프트 - 삭제 -의 재 초기화를 강제로 이클립스 메타 데이터.하지만이 옵션을 선택하면 자세한 시작 매개 변수가 제거됩니다!)

project-dir/.project
project-dir/.classpath
project-dir/.settings/* 

당신의 SCM (특히에 있어야 .project하고 .classpath에 따라 이클립스 문서 ).

목표는 누구나 자신의 SCM 작업 영역을 체크 아웃 / 업데이트하고 Eclipse 프로젝트를 Eclipse 작업 영역으로 가져올 수 있다는 것입니다.

이를 위해 연결된 리소스를 사용하여 .classpath에 상대 경로 만 사용하려고 합니다 .

참고 : project-dirEclipse 작업 공간에서 작성된 디렉토리가 아닌 "외부"프로젝트 디렉토리를 참조 하는 것이 좋습니다 . 이렇게하면 두 개념 (이클립스 작업 영역 대 SCM 작업 영역)이 명확하게 분리됩니다.


으로 ipsquiggle는 주석에 언급, 나는이 언급 한 것처럼 오래된 대답에 , 당신은 실제로 발사 구성을 저장할 수있는 파일을 공유 프로젝트 디렉토리에 직접. 그런 다음 모든 시작 구성을 다른 프로젝트 파일처럼 버전화할 수 있습니다.

(블로그 게시물 팁 : KD에서 실행 구성 작성 및 공유 )

대체 텍스트


16
.launch 파일에 대한 .metadata 작업을 수행하는 데 훨씬 더 나은 작업 흐름은 다음과 같습니다. 시작 구성을 편집 할 때 common탭 에서을 선택합니다 Save as > shared file. 이것은 프로젝트 폴더에 직접 놓아서 나머지 프로젝트와 함께 SCM 할 수 있습니다.
Ipsquiggle

3
.project가 SCM에 있어야하는 이유는 무엇입니까? 예를 들어, 활성화되면 .project가 변경되는 코드 메트릭 도구를 사용하고 싶습니다. 나는 프로젝트의 모든 사용자에게 그것을 강요하고 싶지 않습니다.
jfritz42

8
@ jfritz42 : 로컬 및 어김없는 변경을 당신에게만 유효하다면, 그 버전 .project은 작업 공간 을 위해서만 무시하십시오. 그러나 이클립스 작업 공간에서 신속하게 가져올 수있는 공통 Eclipse 프로젝트 정의의 다른 모든 사용자를 박탈하지 마십시오. 단지 필요한 순간에 맞는 하나의 추가 정의가 있기 때문입니다.
VonC

7
감사합니다. 나는 그 링크들을주의 깊게 연구 할 것이지만, 나는 이미 당신의 링크 중 첫 번째 답변에서 "확실히 예"로 시작하는 반면, 바로 다음 링크에서 "정의 적으로 아니오"로 시작한다는 것을 알았습니다. Google은 다양하고 초보자 친화적 인 조언으로 가득합니다. 목표는 이해하지만 문제를 해결하는 방법이 있습니다. 소스 및 사용자 옵션이 Xcode 생성 및 컴파일러 생성 출력과 완전히 분리 된 Xcode에서 왔 으므로이 질문에 간단한 대답이 있습니다. 이클립스 초보자에게는 해당 파일이 혼합되어 흩어져있는 것으로 보입니다. 나는 이해하기 쉬운 간단한 answr를 찾고 있습니다
garyp

3
나는 VisualStudio 랜드에서 왔으며 두 번째 @garyp입니다. 이것은 정말 핫 엉망입니다 .Eclipse가 사용자별로 임시 및 / 또는 추적 할 필요가없는 추적 파일을 만들어야하는 경우 다른 곳에 배치해야합니다. 프로젝트 및 빌드 정의를 추적 할 수 있으며 모든 임시 가비지가 방해를받지 않습니다. 이클립스 팀의 공식적인 지침이 어딘가에 있습니까? (이클립스 팀이 단위 테스트를하지 않는다는 것이 확실하다. (혹은 그들이 효과적으로하지 못한다면) 최소한 소스 컨트롤을 사용
한다고 말해라

19

현재 소스 제어하에 .project 및 .cproject 파일이있는 프로젝트를 작업 중입니다. 아이디어는 라이브러리 경로 및 링크 지시문과 관련된 설정이 팀 전체에 전파된다는 것입니다.

실제로는 잘 작동하지 않았지만 병합은 거의 항상 충돌 상태로 돌아와서 일식 외부에서 충돌을 제거한 다음 변경 사항을 적용하기 위해 프로젝트를 닫았다가 다시 열어야합니다.

소스 제어 상태로 유지하지 않는 것이 좋습니다.


14

CDT 구성 파일이 소스 제어에 적합하지 않다는 것은 가치가 없습니다 . .cproject 파일에 대한 버그가 매우 자주 변경 되어 충돌을 일으 킵니다 . 저장소에서 cdt-project 파일을 공유하면 항상 충돌이 발생합니다를 참조하십시오 .


Yikes-이 버그는 6 살이며 아직 건드리지 않았습니다. 분명히 소스 제어 지원은 Eclipse 팀의 우선 순위가 아닙니다!
BrainSlugs83

2
.cproject 파일에는 다른 개발자가 수동으로 다시 작성하지 않아도되는 구성 정보가 포함되어 있습니다. 어.
Christopher Barber

7

Maven을 사용하는 프로젝트와 같은 일부 프로젝트는 POM을 기반으로 .project 파일을 생성하는 것을 좋아합니다.

즉, -.metadata 이외의 소스 제어에 있어서는 안됩니다. 프로젝트는 표준 관리 방법 등에 따라 projectdir / .settings가 수행되는지 여부를 결정해야합니다. 표준을 기반으로 환경을 설정하도록 개발자를 정직하게 신뢰할 수 있고 프로젝트에 대해 특별한 것을 사용자 정의 할 필요가 없다면 프로젝트를 넣을 필요가 없습니다. 저에게 모든 프로젝트를 구체적으로 구성하는 것이 좋습니다. . 이를 통해 개발자는 기본 설정을 앞뒤로 변경하지 않고도 동일한 작업 공간에서 여러 프로젝트의 작업을 수행 할 수 있으며 기본 설정이 프로젝트 표준과 일치하는 것을 무시하여 설정을 매우 명시 적으로 만듭니다.

어려운 부분은 모두 동기화 상태를 유지하는 것입니다. 그러나 대부분의 경우 .settings 파일을 프로젝트에서 프로젝트로 복사 할 수 있습니다. 소스 제어에서 원하지 않는 것이 있으면 SCM에서 지원하는 경우 svn : ignore를 설정하는 것과 동일하게 수행하십시오.


2
우리는 Maven 1과 2를 사용하며, 요청하면 .project 파일 만 생성합니다. 그리고 그렇게해도 POM의 내용을 기반으로하므로 다른 개발자가 이미 해당 단계를 수행하고 결과를 버전 제어로 확인한 경우,이를 활용하지 않겠습니까?
앤드류 스완

6

.classpath 파일은 수작업으로 설정하는 것이 많은 작업이 될 수 있고 새로운 개발자가 프로젝트에 참여하기 어려울 수 있기 때문에 scm을 확인하기에 좋은 후보입니다. 다른 소스에서 생성 될 수 있으며,이 경우 다른 소스를 체크인해야합니다.

설정은 설정에 따라 다릅니다. 이것은 회색 영역이지만 일부 설정은 거의 필수이며 프로젝트를 체크 아웃하고 Eclipse로 가져 와서 모든 것을 설정하고 진행하는 것이 편리합니다.

따라서 프로젝트에서 CVS.settings라는 .settings 폴더의 복사본을 유지 관리하고이를 .settings에 복사하는 개미 작업이 있습니다. CVS에서 프로젝트를 가져 오면 'eclipsify'ant 태스크를 호출하여 기본 설정을 새 .settings 폴더에 복사하십시오. 프로젝트에서 개발하는 모든 사람이 필요로하는 설정을 구성하면 해당 설정을 CVS.settings 폴더로 다시 병합하여 CVS에 커밋합니다. 이렇게하면 SCM에서 설정을 저장하는 것이 의식적인 과정이됩니다. 큰 변경 사항이 체크인 될 때마다 개발자가 해당 설정을 .settings 폴더로 다시 병합해야합니다. 그러나 놀랍도록 잘 작동하는 간단한 시스템입니다.


4

나는 그들 중 누구도 말하지 않았다. 워크 스테이션에만 관련된 정보가 포함되어있을 가능성이 높습니다 (라이브러리 및 모든 경로에 대해 생각하고 있습니다). 또한 팀의 누군가가 Eclipse를 사용하지 않는 경우 어떻게해야합니까?


3
아니, .classpath에 상대 경로를 가질 수 있습니다. stackoverflow.com/questions/300328#300346을 참조하십시오 .
VonC

7
그들이 같은 개발자를 사용하지 않는다면 꽤 일관되지 않고 비효율적 인 팀처럼 들립니다. 도구, 프로젝트, 디버그 및 빌드 정의 등-다음으로 일반적인 코딩 표준 또는 JDK를 사용하지 말라고 알려줍니다. -이상적으로, 사용자는 소스 컨트롤에서 프로젝트를 끌어 내고 많은 추가 설정이나 지시없이 바로 들어갈 수 있어야합니다. 따라서이 대답은 받아 들일 수없는 것입니다.
BrainSlugs83

1
누군가가 새로운 작업 공간에서 프로젝트를 열었 기 때문에 병합하는 동안 환경 설정 파일의 충돌을 처리하는 것이 더 비효율적입니다. 이는 대규모 프로젝트에서 악몽입니다. 게다가, 동일한 구성을 가진 동일한 IDE를 강제로 사용하는 것은 불필요한 제한처럼 들립니다.
A. Rodas

[~ agnul]에 동의합니다. 프로젝트는 빌드 도구 (gradle, maven, ant 등)를 사용해야하며 IDE는 빌드 도구 구성 파일 (build.gradle, pom.xml, build.xml, etc ...) IDE 파일을 버전으로 제어해서는 안됩니다. 그것들은 프로젝트 특정 파일이 아닌 개발자 특정 파일입니다. 그들은 버전 관리에 속하지 않습니다.
axiopisty

2

치다:

.classpath
.project
.launch

프로젝트 상대 경로를 사용하는 한 버전 관리가 있어야합니다. 이를 통해 다른 개발자가 프로젝트를 확인하고 다른 개발자가 겪은 모든 설정 과정을 거치지 않고도 바로 작업을 시작할 수 있습니다.

버전 제어에도 .metadata를 포함시키려는 유혹이있을 수 있으므로 Eclipse 개발자는 전체 작업 공간을 체크 아웃하고 모든 올바른 프로젝트로 사전 구성 할 수 있지만 누구나 작업 할 때마다 많은 사용자 특정 정보를 포함합니다. .metadata를 포함하지 않는 것이 좋습니다. 기존의 모든 Eclipse 프로젝트를 가져 오기만하면 로컬 작업 공간을 쉽게 구축 할 수 있습니다.


내 경험상 이것은 Eclipse를 최신 버전으로 업데이트하거나 특징을 전환 할 때 다양한 방식으로 깨지는 경향이 있습니다.
Thorbjørn Ravn Andersen

1

나는 새로운 동료 (나 자신)를 위해 일식 작업 공간 설정을 구성하는 데 너무 많은 시간을 보냈습니다. 결국 결국 내 자신의 .metadata를 새 개발자 컴퓨터에 복사했습니다.

당신이 팀에서 일하고 있다면, 다음은 버전 관리를 유지하기에 아주 좋은 후보라고 생각합니다.

  • 설치된 JRE 및 해당 이름
  • 서버 런타임 환경
  • 자바 에디터 템플릿
  • 버전 제어 키보드 단축키
  • 프로젝트 특정 설정을 제공하지 않는 플러그인 설정
  • 메이븐 설정
  • 사전 구성된 관점
  • ...
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.