Gradle 데몬이 옛 환경변수를 들고 있을 때
환경변수 설정 전에 떠 있던 Gradle 데몬이 빈 토큰으로 의존성 해석을 실패시키는 진단/해결
Gradle 데몬이 옛 환경변수를 들고 있을 때
GITHUB_TOKEN을 분명히 설정해뒀는데 ./gradlew가 Could not resolve …:SNAPSHOT 으로 죽는다면, Gradle 데몬이 환경변수 설정 이전에 떠서 옛 환경(빈 토큰)을 그대로 들고 있을 가능성이 크다.
진단 단서
--refresh-dependencies 실행 시 첫 줄을 보자.
1
> Starting a Gradle Daemon, 3 stopped Daemons could not be reused, use --status for details
“could not be reused”가 떴다는 건 호환 안 되는 데몬이 여럿 살아 있었다는 뜻. 환경변수 mismatch도 그중 하나다.
해결 — 데몬 종료 후 새로 띄우기
1
2
.\gradlew.bat --stop
.\gradlew.bat --refresh-dependencies <task>
새 데몬은 현재 셸의 환경변수를 그대로 상속받기 때문에 토큰이 정상적으로 전달된다.
IntelliJ도 같은 패턴
IntelliJ가 환경변수 설정 이전에 떠 있으면, 그 IDE 프로세스가 자식으로 띄우는 Gradle 데몬도 옛 환경을 물려받는다. --stop만으로 부족하면:
- IntelliJ를 트레이까지 완전 종료
- 시작 메뉴/작업표시줄로 재실행 (User-scope 환경변수 자동 상속)
- Gradle tool window → Reload All Gradle Projects
빠른 자가진단 흐름
원격 저장소 → 로컬 셸 → 데몬 → IDE 순으로 분리해서 본다.
| 체크 | 명령 | OK 신호 |
|---|---|---|
| 원격 정상 | curl -u $env:GITHUB_ACTOR:$env:GITHUB_TOKEN <pkg-url> | HTTP 200 |
| 셸 정상 | .\gradlew.bat dependencies | resolve 성공 |
| 데몬 정상 | 데몬 재기동 후 동일 명령 | 동일 |
| IDE 정상 | IntelliJ 재시작 후 Sync | 의존성 트리에 SNAPSHOT 표시 |
원격은 200인데 IDE만 실패 → 거의 데몬/IDE의 stale env 문제.
영구 대안
데몬 재시작 의존을 끊고 싶다면 자격증명을 ~/.gradle/gradle.properties로 옮긴다. build.gradle에서 findProperty() 폴백 추가:
1
2
3
4
credentials {
username = project.findProperty("gprUsername") ?: System.getenv("GITHUB_ACTOR")
password = project.findProperty("gprToken") ?: System.getenv("GITHUB_TOKEN")
}
이러면 환경변수가 비어 있어도 빌드는 통과한다. (단, gradle.properties는 절대 커밋 금지)
This post is licensed under CC BY 4.0 by the author.