책에서는 이클립스로 진행하지만, 나는 VS Code를 쓰기때문에 환경 세팅도 VS Code 기준으로 맞춰서 진행했다.
목표는 단순하다.
- 실습 저장소를 내 계정으로 가져오고(Fork)
- 로컬로 내려받고(Clone)
- VS Code에서 Maven 프로젝트로 정상 인식시키고
- WebServer.java 실행까지 확인하기
이게 되면 “개발환경 구축 완료”다.
실습 저장소를 Fork로 내 계정에 복사
실습은 원본 저장소(강의/책 제공 저장소)로 진행하는데, 문제는 원본 저장소는 내가 push 권한이 없다는 것이다.
즉, 원본 그대로는 이런 작업이 불가능하다.
- 커밋 푸시(push)
- 브랜치 만들어서 작업
- 내 방식대로 실습 이력 관리
그래서 가장 흔한 방식이 Fork다.
왜 Fork를 하냐?
Fork는 그냥 “복사”가 아니라, 원본 저장소를 내 GitHub 계정 아래에 독립된 저장소로 만드는 것이다.
- 원본 저장소는 push 권한이 없음
- 실습 코드를 내 계정에서 마음대로 커밋/푸시하려면
- 내 저장소로 가져와야 함 → Fork
Fork 이후에는 완전 내 저장소니까
- 자유롭게 commit / push 가능
- 실습용/과제용으로 이력 남기기 좋음
Fork한 저장소를 로컬로 Clone
Fork가 끝났으면 이제 내 저장소 URL로 로컬에 내려받는다.
Clone은 “파일 내려받기” 단계
- GitHub에서 내 fork 저장소 URL 복사
- 로컬에서 git clone ...
이 단계에서 중요한 포인트는 이거다.
아직 IDE가 인식하는 프로젝트가 아니라, 그냥 “로컬에 코드가 내려온 상태”일 뿐
즉, 여기까지는 “프로젝트 실행 준비”가 아니라 “코드 확보”다.
VS Code에서 올바른 폴더를 열었는지 확인
Clone하고 나서 VS Code에서 아무 폴더나 열면 인식이 꼬인다.
그래서 Maven 프로젝트 루트를 제대로 열었는지가 핵심이다.
내가 VS Code에서 연 폴더는:
- web-application-server
그리고 루트에 이런 구조가 보였다.
이 조합이 보이면 거의 확정이다.
👉 pom.xml이 루트에 있다 = Maven 프로젝트 루트를 제대로 연 것
VS Code가 Maven 프로젝트로 자동 인식하는지 확인
폴더를 제대로 열면, VS Code(Java Extension Pack 기준)는 사실상 자동으로 작업을 시작한다.
VS Code가 자동으로 한 일 (정상 흐름)
- pom.xml을 보고 “Maven 프로젝트네?”라고 인식
- 의존성 다운로드 시도 (Maven dependency resolve)
- Java 프로젝트로 클래스패스 구성
- 실행/디버그 가능한 상태로 세팅
여기서 중요한 건 “내가 뭘 눌러서 세팅했다”가 아니라,
pom.xml을 루트에서 제대로 열었으면 자동으로 굴러가기 시작한다는 것
실행 확인: WebServer.java 실행
이제 진짜로 “환경 구축이 끝났는지” 확인할 차례다.
- WebServer.java를 실행했을 때
- 콘솔에 서버 실행 로그가 정상 출력되면
- 일단 개발 환경 구축은 끝이다.
내 경우 실행하면 다음처럼 출력이 떴다.

이렇게 정상 출력이 나오면
“VS Code + Maven 인식 + 실행”까지 확인된 거라 실습 시작 준비 끝.
여기까지 오면 얻은 상태
정리하면 지금 내 상태는 이거다.
- 실습 저장소를 내 계정으로 Fork해서 수정/커밋 가능
- 로컬로 Clone해서 코드 확보
- VS Code가 프로젝트를 Maven으로 인식
- 실제로 WebServer.java 실행까지 성공
즉, 이제부터는 환경이 아니라 실습 요구사항 구현에 집중하면 된다.
출처 : 《자바 웹 프로그래밍 Next Step》, 박재성, 로드북
'Book > 자바 웹 프로그래밍 Next Step' 카테고리의 다른 글
| 3장_ JDK 17 + Maven 설치 (0) | 2026.01.28 |
|---|---|
| 3장_ 원격 서버 배포 전 준비 : UTF-8 세팅하기 (0) | 2026.01.28 |
| 2장_ 문자열 계산기 추가 요구사항 : 중복 제거, 읽기 좋은 코드를 구현하기 위한 리팩토링 (0) | 2026.01.27 |
| 2장_ 문자열 계산기 리팩토링: JUnit으로 요구사항 검증하면서 구현해보기 (0) | 2026.01.27 |
| 2장_ 문자열 계산기 : main()으로 찍어보는 테스트, 왜 결국 막히는가? (0) | 2026.01.27 |
