La foret rouge
Published on

Eclipse에서 생성한 Spring Project를 공유하고 다른 팀원이 Import하기

Authors
  • avatar
    Name
    신주용

팀 프로젝트를 시작하며

팀을 구성하여 프로젝트를 진행할 때 우리는 Spring Legacy나 Boot 프로젝트를 Git Repository를 만들고 업로드하여 공유합니다. 이 때 팀원 A가 Eclipse(또는 STS)에서 만들어 준 스프링 프로젝트를 팀원 B가 Import하려 할 때 일반적으로는 File > Import > General > Existing Projects into Workspace를 사용해서 프로젝트를 불러오게 됩니다.

eclipse import
일반적인 이클립스 프로젝트 불러오기

하지만 우리는 분명 A가 스프링 프로젝트를 만들고, 모든 파일을 git add 하여 커밋을 올린 것도 확인했는데 그 경로의 프로젝트를 내 컴퓨터에서 불러오려고 하니 프로젝트가 없다고 합니다. 대체 무슨 문제일까요?

eclipse import
일반적인 이클립스 프로젝트 불러오기 방법. 상단에 불러올 프로젝트가 없다는 경고 메시지가 출력됩니다.

원인

Eclipse(또는 STS)는 프로젝트를 생성하거나 Spring Initializr을 이용해 스프링 프로젝트를 생성하면 프로젝트 root 경로에 .classpath, .project 파일을 생성하여 프로젝트를 관리합니다. 그런데 이 파일들이 .gitignore에 추가되어 있습니다. 그러니 팀원 A가 프로젝트 소스코드를 git에 추가할 때 위 두 파일은 추가가 안 됐고, 팀원 B가 git clone을 통해 받아올 때는 .classpath, .project 파일이 없는 상태여서 당연히 정상적으로 불러오지 못할겁니다.

spring initializr gitignore

해결 방법

해결 방법은 크게 세 가지가 있습니다.

  1. .classpath, .project 파일을 git에 추가한다.

    • 파일을 강제로 추가하는 방법입니다. .gitignore 파일을 열고 저 두 파일명을 지워주면 저 파일을 git으로 관리할 수 있습니다. 또는 git add -f .classpath 같이 .gitinore 파일을 수정하지 않고 강제로 추가할 수도 있습니다.
    • 하지만 이 방법은 권장하지 않습니다. 나와 팀원의 개발 환경(시스템 경로 등)이 다를 수 있기 때문입니다.
  2. Eclipse가 아니라 Maven 프로젝트로 불러옵니다.

    • 위에서 예시로 들었던 File > Import > General > Existing Projects into Workspace 방법이 아니라 File > Import > Maven > Existing Maven Projects를 사용해 불러옵니다.
    • 프로젝트 구조를 잘 뜯어 보면 알겠지만, Eclipse(STS)에서 만든 Spring Legacy Project 또는 Spring Boot Project는 정확히 말하자면 Spring Framework를 사용하는 Maven 프로젝트입니다. pom.xml 파일의 dependencies에 Spring을 추가해준 것이죠.
    • 그러므로 아래 사진과 같이 Maven 프로젝트로 불러오면 .classpath, .project 파일이 없어도 정상적으로 프로젝트를 불러올 수 있습니다. import maven project
    • 이 방법은 intelliJ IDEA로 백엔드를 개발하시는 분들도 사용 가능합니다.
  3. 만약 본인이 FE 개발자여서 Spring Backend를 수정하지 않고, 단지 개발 테스트 목적으로 실행되는 백엔드 서버가 필요만 하신 분이라면 이렇게 프로젝트를 불러오지 않아도 됩니다. Spring Boot는 .jar 파일로 배포할 수 있다는 장점이 있으니 이를 활용하시면 됩니다.

    cd backend-project-path
    ls
    mvnw  mvnw.cmd  pom.xml  README.md  src  target
    
    ./mvnw package
    ls target
    classes
    some-maven-directories
    backend-project-0.0.1-SNAPSHOT.jar
    
    java -jar target/backend-project-0.0.1-SNAPSHOT.jar
    

Prerequisites: 이 글에서 언급되었으나 깊게 설명하지 않은 내용입니다.

  • git, gitignore
  • Maven