공공부하자개발 · 영어 학습 노트
자바
실무 확장Excel · 파일 업로드 · DB 연동0/22 완료
  • 01Excel(XLSX) 구조와 순수 JDK로 읽기/쓰기
  • 02Apache POI로 Excel 업로드/다운로드
  • 03파일 업로드/다운로드 서버 (HttpServer)
  • 04JDBC 기초와 트랜잭션 (H2)
  • 05MyBatis 어노테이션 매퍼로 쿼리 연동
  • 06MyBatis XML 매퍼 · Oracle 방언 · PageHelper · Spring Boot
  • 07REST API 서버와 JSON
  • 08Vue 3 SPA 와 Java 서버 연동
  • 09@Scheduled 운영
  • 10로깅 실무: 레벨·계층, MDC 추적, 예외·성능, 마스킹, 롤링, JSON 로그
  • 11외부 API 연동
  • 12테스트 실무
  • 13암호화·개인정보 보호
  • 14인코딩·한글 실무
  • 15@Transactional 심화
  • 16긴 작업 비동기 처리와 진행률
  • 17SFTP·FTP 파일 연계
  • 18로컬 캐시와 @Cacheable
  • 19메일·알림 발송
  • 20웹 보안 체크리스트
  • 21빌드 도구와 폐쇄망 의존성 반입
  • 22성능 측정: p50·p95·p99, 측정 계층, JFR, JMH 함정, 자체 부하 테스트, 병목 순위
사이트 소개개인정보처리방침연락처
© 2026 공부하자
홈 › 실무 확장 › 21 / 22

빌드 도구와 폐쇄망 의존성 반입

Maven 좌표·범위·충돌, 로컬 저장소 반입, 사내 미러, 재현 가능한 빌드
섹션 7진행 0 / 22
1왜 배우는가2핵심 원리3코드 예제4응용 변형 예제5자주 하는 실수 (Tip)6연습 문제7정리‹ 이전다음 ›

5. 자주 하는 실수 (Tip)

실수 1: dependency:go-offline 없이 jar 만 골라 반입한다

pom.xml 의 dependencies 목록만 보고 jar 를 받으면 전이 의존성과 빌드 플러그인을 빠뜨립니다. 반드시 go-offline 으로 전체를 모은 뒤 반입합니다.

실수 2: SNAPSHOT 버전을 운영 빌드에 그대로 쓴다

SNAPSHOT 은 언제든 내용이 바뀔 수 있는 버전입니다. 반입 시점의 SNAPSHOT 과 다음 반입 시점의 SNAPSHOT 내용이 달라 재현이 안 됩니다. 운영 빌드는 숫자로 고정된 릴리스 버전만 씁니다.

실수 3: <scope>system</scope> 으로 jar 경로를 하드코딩한다

팀원마다 로컬 경로가 다르고, 저장소 버전 관리 대상도 아니라 다른 PC에서 빌드가 깨집니다. install:install-file 로 정식 좌표에 등록하는 방식을 씁니다.

실수 4: .sha1·.sha256 대조 없이 jar 를 그대로 신뢰한다

USB 나 사내망 전송 중 파일이 깨지거나, 실수로 다른 버전이 섞여 들어갈 수 있습니다. 체크섬 대조 없이 반입하면 몇 주 뒤 원인 불명 오류로 되돌아옵니다.

실수 5: provided·runtime scope 를 전부 compile 로 넣는다

배포 jar 크기가 불필요하게 커지고, WAS 가 이미 제공하는 클래스와 충돌할 수 있습니다. scope 표(2.2)를 확인하고 정확히 지정합니다.

실수 6: Gradle 캐시를 Maven 저장소처럼 그냥 통째로 복사한다

Gradle 캐시는 버전에 민감한 메타데이터를 포함합니다. 개발 PC와 빌드 서버 Gradle 버전이 다르면 반입해도 인식되지 않을 수 있습니다.

실수 7: 인코딩 경고를 무시하고 넘어간다

project.build.sourceEncoding 을 지정하지 않으면 플랫폼 기본 인코딩으로 컴파일되어, 한글 주석·리소스가 서버에서 깨질 수 있습니다. 경고가 보이면 그 자리에서 고칩니다.

자주 하는 실수 (Tip)
  • 실수 1: dependency:go-offline 없이 jar 만 골라 반입한다
  • 실수 2: SNAPSHOT 버전을 운영 빌드에 그대로 쓴다
  • 실수 3: <scope>system</scope> 으로 jar 경로를 하드코딩한다
  • 실수 4: .sha1·.sha256 대조 없이 jar 를 그대로 신뢰한다
  • 실수 5: provided·runtime scope 를 전부 compile 로 넣는다
  • 실수 6: Gradle 캐시를 Maven 저장소처럼 그냥 통째로 복사한다
  • 실수 7: 인코딩 경고를 무시하고 넘어간다
이전 섹션4 응용 변형 예제5 / 7다음 섹션6 연습 문제