개발일기
Spring Boot 기반 보안 실습 프로젝트의 기본 구성
시원한봄유성
방금 전·2026년 6월 12일 오후 08:44
30
cat > DEVELOPMENT_DIARY.md <<'EOF'
# 개발일기
## 2026-06-12
### 오늘 진행한 내용
Spring Boot 기반 보안 실습 프로젝트의 기본 구성을 확인했다. 프로젝트는 `spring-boot-starter-security`, `thymeleaf`, `mybatis`, `h2`를 사용하며, 로그인 화면과 권한별 메뉴 화면, ADMIN 권한에서 접근하는 ToDo 목록 화면을 중심으로 구성되어 있다.
리소스 구조를 확인하면서 다음 파일들의 역할을 정리했다.
- `application.yml`: 애플리케이션 이름과 H2 인메모리 데이터베이스 연결 설정
- `schema.sql`: `todos`, `authentications` 테이블 생성 스크립트
- `data.sql`: ToDo 샘플 데이터와 테스트용 계정 데이터 등록
- `login.html`: 사용자 로그인 화면
- `menu.html`: Spring Security 권한에 따라 다른 메뉴를 보여주는 화면
- `todo/list.html`: ToDo 목록 출력 화면
빌드 검증도 진행했다. 최종적으로 Gradle 빌드는 성공했고, 프로젝트가 현재 상태에서 컴파일 및 테스트 단계를 통과하는 것을 확인했다.
### 트러블슈팅: Gradle Wrapper 실행 권한 및 캐시 접근 문제
#### 문제 상황
처음에 프로젝트 빌드를 확인하기 위해 다음 명령을 실행했다.
```bash
./gradlew build --no-daemon
```
하지만 `gradlew` 파일에 실행 권한이 없어 아래와 같은 오류가 발생했다.
```text
permission denied: ./gradlew
```
실행 권한 문제를 우회하기 위해 `sh gradlew build --no-daemon`으로 다시 실행했지만, 이번에는 Gradle wrapper가 사용자 홈 디렉터리의 Gradle 캐시 경로에 락 파일을 만들지 못해 실패했다.
```text
java.io.FileNotFoundException: /Users/miju/.gradle/wrapper/dists/.../gradle-8.13-bin.zip.lck (Operation not permitted)
```
#### 원인 분석
첫 번째 문제는 `gradlew` 파일 권한이 `-rw-rw-rw-` 상태라 직접 실행할 수 없었기 때문이다. Unix 계열 환경에서는 `./gradlew`로 실행하려면 실행 권한이 필요하다.
두 번째 문제는 Gradle wrapper가 빌드 실행 중 `~/.gradle` 디렉터리에 접근해야 하는데, 현재 작업 환경의 샌드박스 권한 때문에 홈 디렉터리 쓰기가 제한되어 발생했다.
#### 해결 방법
직접 실행 권한 문제는 `sh gradlew` 방식으로 우회했다. 이후 Gradle 캐시 접근 문제는 빌드 명령에 필요한 권한을 승인한 뒤 다시 실행해서 해결했다.
최종 실행 명령은 다음과 같다.
```bash
sh gradlew build --no-daemon
```
#### 결과
빌드가 정상적으로 완료되었다.
```text
BUILD SUCCESSFUL
```
#### 배운 점
Gradle 프로젝트를 처음 실행할 때는 코드 오류뿐 아니라 실행 스크립트 권한과 로컬 Gradle 캐시 접근 권한도 함께 확인해야 한다. 특히 macOS나 제한된 개발 환경에서는 `gradlew` 실행 권한, `~/.gradle` 접근 권한, Java 버전이 빌드 성공 여부에 직접적인 영향을 줄 수 있다.
다음부터는 빌드 오류가 발생하면 먼저 다음 순서로 확인하면 좋다.
1. `gradlew`에 실행 권한이 있는지 확인한다.
2. 직접 실행이 안 되면 `sh gradlew`로 실행해 본다.
3. Gradle wrapper가 `~/.gradle`에 접근할 수 있는지 확인한다.
4. 그 다음에 컴파일 오류나 테스트 실패 여부를 확인한다.
EOF댓글
댓글을 입력하세요...
댓글이 없습니다.
