| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
- effective
- 자바스크립트
- 스프링
- java
- 자바
- Spring Boot
- 후기
- error
- 백준
- 이펙티브
- 독후감
- JPA
- kibana
- boot
- 엘라스틱서치
- javascript
- 맛집
- MySQL
- Spring
- java8
- 리뷰
- 알고리즘
- Git
- Web
- elasticsearch
- nodejs
- RCP
- jface
- node
- 인터페이스
- Today
- Total
wedul
Maven Scope 정리 본문
Maven Scope 정리
pom.xml에서 상용되는 scope에 대한 정리
※compile
- 아무런 scope를 명시하지 않았을때 사용되는 기본값.
- 테스트 및 런타임에도 classpath에포함된다.
※provied
- JDK 또는 컨테이너에 의해서 runtime에 제공되는 모듈
- 이 scope는 이미 컨테이너가 해당 라이브러리를 제공하고 있을때 유용 그러므로 실제로 배포시에 제외대상
- 예를 들면 아래 servlet api의 경우 이미 웹서버에서 제공하고 있는 경우에 maven scope를 provied로 기재
1 2 3 4 5 6 | <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>2.5</version> <scope>provided</scope> </dependency> | cs |
※runtime
- 런타임시 필요하지만 컴파일시에 필요하지 않는 경우에 사용
- 테스트와 런타임에는 사용 되지만 컴파일시에 사용 되지 않음
- 대표적 예로 JDBC Driver
1 2 3 4 5 6 | <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>6.0.6</version> <scope>runtime</scope> </dependency> | cs |
※test
- 테스트 코드 컴파일시 필요, 배포시 제외
참고
https://www.baeldung.com/maven-dependency-scopes
Scope를 Provided로 지정했을때 문제사례
인텔리제이에서 간단한 spring project를 만들고 실행시킬때 NoClassDefFoundError: javax/servlet/Filter 에러가 발생했다.
그 이유를 구글링해서 확인해보니 실행시 사용할 spring-boot-starter-tomcat의 스코프를 provided로 지정해서 에러가 발생했다. 스코프를 지워서 default인 compile로 사용하지 정상적으로 동작했다.
https://stackoverflow.com/questions/31494183/getting-a-caused-by-java-lang-noclassdeffounderror-javax-servlet-http-httpser
'IT 지식 > 기타지식' 카테고리의 다른 글
| 간단한 카카오 챗봇 만들기 (1) | 2018.10.06 |
|---|---|
| Fake SMTP로 메일 전송 테스트 (0) | 2018.10.04 |
| Maven 프로젝트를 Gradle로 변경 (0) | 2018.08.05 |
| Mac에서 일반 키보드 연결시 Home/End 버튼 사용방법 (5) | 2018.06.16 |
| Tistory 외부 Editor API Tistory Editor 사용후기 (0) | 2018.06.15 |
