Eclipse .classpath / .project 파일에는 무엇이 있습니까?


143

최근 팀원 중 한 명이 Eclipse 프로젝트에 문제가있었습니다. Tomcat이 응용 프로그램의 JAR을 배포하지 않았습니다.

결국 .classpathEclipse 파일이 프로젝트가 정상인 팀 구성원과 동일하지 않은 것으로 나타났습니다 . .classpath파일이 정상인 프로젝트 의 파일 로 교체 되었고 Tomcat 배포가 완료되었습니다.

호기심에서 벗어나 무언가가 잘못되면 미래에 무엇을 볼지 , 파일 내부에 무엇이 있는지 알 수 있습니다. 거기에 무엇을 추가 할 수 있습니까? 그 의미는 무엇입니까?.classpath.project


.classpath 파일이 Java에만 해당됩니까? 이 질문은 대부분 언어에 구애받지 않는 것처럼 보이지만 이 답변 에서 Java에만 관련이있는 것처럼 들립니다.
Casey Kuball

답변:


144

Eclipse는 플러그인의 런타임 환경입니다. Eclipse에 표시되는 거의 모든 것은 Eclipse 자체가 아니라 Eclipse에 설치된 플러그인의 결과입니다.

.project파일은 핵심 Eclipse 플랫폼에 의해 유지되고, 그 목표는 일반, 플러그인 독립적 인 Eclipse보기에서 프로젝트를 설명하는 것입니다. 프로젝트 이름은 무엇입니까? 작업 공간의 다른 프로젝트는 무엇을 의미합니까? 프로젝트를 빌드하는 데 사용되는 빌더는 무엇입니까? "빌드"의 개념은 Java 프로젝트뿐만 아니라 다른 유형의 프로젝트와도 관련이 있습니다.

.classpath파일 이클립스 JDT 기능 (기준 유지 기능 = 플러그인 세트). JDT는 프로젝트에 여러 개의 "메타"파일을 보유합니다 (프로젝트 .settings내부의 디렉토리 참조 ). .classpath파일은 단지 그들 중 하나입니다. 특히, .classpath파일을 제대로하기 위해 JDT 기능 요구 사항이 프로젝트를 컴파일하는 정보가 포함되어 프로젝트의 소스 폴더 (즉, 무엇을 컴파일하는); 출력 폴더 (로 컴파일 할 위치 ); 및 클래스 경로 항목 (예 : 작업 공간의 다른 프로젝트, 파일 시스템의 임의 JAR 파일 등).

이러한 파일을 한 시스템에서 다른 시스템으로 맹목적으로 복사하면 위험 할 수 있습니다. 예를 들어, 임의의 JAR 파일이 클래스 경로에있는 경우 (즉, 작업 공간 외부에 있고 절대 경로 이름 지정으로 참조되는 JAR 파일) 파일을 .classpath이식 할 수 없도록 렌더링 되고 파일을 수정해야합니다. 가지고 다닐 수 있는. .classpath파일 이식성 을 보장하기 위해 따라야 할 모범 사례가 있습니다 .


58
이 모든 것의 외부인으로서, 이것은 모두 "어쨌든 프로젝트 작업 공간 관리에 관한 모든 것을 누군가가 이해하기 어려운 너무 까다로운 블랙 아트로 만들기 위해 관리합니다"로 번역됩니다.
Warren P

1
@Isaac- git및로 프로젝트를 관리하는 경우 호기심에서- Maven(단순하게) 단일 src폴더 (단순한 "hello world" .java파일 보유 )가있는 저장소 (프로젝트)의 "루트"폴더가 있고 프로젝트 pox.xml: - 파일 내가 제대로 이해한다면, 필요가 없습니다 (또는 어쩌면 반드시 필요)를 유지하지하기 위해 .project, .classpath그리고 .settings/파일 / 폴더가 아니라 같이 git저장소 (ie-는에 추가 .gitignore예를 들어 파일)?
가이 아브라함

1
@GuyAvraham : Eclipse 작업 방식, 특히 작업 영역 초기화 방법에 따라 다릅니다. 새 작업 공간에서 Eclipse를 시작한 다음 "기존 Maven 프로젝트 가져 오기"를 사용합니까? 그렇다면, 당신이 옳습니다. 이러한 파일들 중 어느 것도 m2eclipse당신을 위해 그것을 돌보는 것처럼 실제로 필요하지 않습니다 (적어도, 그것이해야 할 일입니다).
Isaac

1
@buncis .project는에 있지 않아야합니다 .gitignore. 에 대해서 .classpath- 당신이 사용하는 경우 m2eclipse당신의 작업 공간을 시작할 메이븐 프로젝트를 업데이트하도록 구성되어, 당신은 해야합니다 추가로 확인 될 .classpath.gitignore있지만 내가 직접 테스트하지 않았습니다.
Isaac

1
@buncis는 마지막 주석을 수정합니다. 분명히 M2E는 요즘 프로젝트를 구성하는 데 아주 좋은 일을합니다. 최근에 모든 유형의 약 150 개의 Java 프로젝트로 구성된 코드베이스에서 작업했습니다. 모두 제거 .project하고에 .classpath추가했습니다 .gitignore. 모든 것이 잘 작동하며 Git에서 이러한 파일을 너무 자주 업데이트 할 필요가 없습니다.
아이작

37

.project

작업 공간에서 프로젝트가 작성되면 프로젝트를 설명하는 프로젝트 설명 파일이 자동으로 생성됩니다. 이 파일의 유일한 목적은 프로젝트를 자체 설명하여 서버에 압축 또는 릴리스 된 프로젝트를 다른 작업 공간에서 올바르게 다시 작성할 수 있도록하는 것입니다.

.classpath

클래스 경로는 프로젝트에서 Java 빌더가 고려할 Java 소스 파일 및 자원 파일을 지정하고 프로젝트 외부에서 유형을 찾는 방법을 지정합니다. Java 빌더는 Java 소스 파일을 출력 폴더로 컴파일하고 자원을 여기에 복사합니다.


11

언급 된 파일은 다양한 플러그인으로 확장 가능하므로 완전한 참조를 사용할 수 없습니다.

기본적으로 .project 파일은 빌더 및 프로젝트 특성 설정과 같은 프로젝트 설정을 저장하고 .classpath 파일은 실행 중에 사용할 클래스 경로를 정의합니다. 클래스 경로 파일에는 프로젝트의 폴더에 해당하는 src 및 대상 항목이 포함됩니다. con 항목은 JVM 라이브러리와 같은 일종의 "가상"항목을 설명하는 데 사용되거나 Eclipse 플러그인 종속성의 경우에 사용됩니다 (특별한 src 항목을 사용하여 일반 Java 프로젝트 종속성이 다르게 표시됨).


3

이 일식 문서에는 .project파일 의 마크 업에 대한 세부 사항이 있습니다. 프로젝트 설명 파일

.project파일을 다음과 같이 설명합니다 .

작업 공간에서 프로젝트가 작성되면 프로젝트를 설명하는 프로젝트 설명 파일이 자동으로 생성됩니다. 이 파일의 목적은 프로젝트를 자체 설명하여 서버에 압축 또는 릴리스 된 프로젝트를 다른 작업 공간에서 올바르게 다시 작성할 수 있도록하는 것입니다. 이 파일은 항상 ".project"라고합니다.

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