jar는 기본적으로 build path에 라이브러리가 어디있는 지 경로를 정해둔다.
예를 들어
configure build path - Libraries - Maven Dependencies에서 [Add Library] - [Server Runtime] - [Apache Tomcat v9.0]를 선택하여 직접 경로를 설정한다.
* Tomcat 자체가 라이브러리인 것은 아니지만, Tomcat 폴더의 lib 폴더에 라이브러리들이 있다. Tomcat 자체적으로 서블릿과 jsp를 갖고 있기 때문이다.
그러나 이렇게 설정하면 절대경로가 일치하지 않기 때문에 장소를 변경하면 돌아가지 않게 될 것이다.
그렇다고 해서 모든 프로젝트들에 모든 라이브러리들을 다 들고다니는 것은 또 문제가 된다.
이것을 Maven이 해결해줄 수 있다.
jar에서 처럼 경로를 따로 지정해주지 않고, pom.xml의 <dependency> 안에 라이브러리를 저장해놓는다.
그렇게 하면 새로운 것이 작성되면 원격 저장소에서부터 로컬 저장소로 자동으로 다운로드가 된다. 서로 다른 프로젝트 파일들도 같은 로컬 저장소를 공유하기 때문에 효율성을 더 높일 수 있다.
( 로컬 저장소 위치: ${user.home}/.2/repository )
( 원격 저장소 위치: The Central Repository 또는 Maven Repository 라는 웹사이트 )
참고) JSP 개발할 때 JSP 라이브러리를 직접 받은 것이 아니라, 톰캣을 통해 받았으므로 개별적인 API 라이브러리 버전은 모를 것이다. 이럴 때는
1. Apache Tomcat 사이트의 Tomcat 9.0 의 Documentation에서 사용한 Reference에서 JSP 2.3 버전을 사용했고, Servlet 4.0 버전을 사용했다는 것을 알 수 있다.
2. 그런데 이 것을 매 번 확인하는 것은 불편하기 때문에, MVN repository에서 "Tomcat jsp" 라고 검색하면, 톰캣 버전의 JSP API를 구할 수 있다. 여기서 톰캣 버전에 맞는 것을 받으면 된다. Maven 코드를 복사해서, pom.xml의 <dependency>에 붙여넣어 사용하면 된다.
Tomcat JSP API만 dependency에 적더라도, 알아서 Tomcat JSP API와 연관된 Tomcat EL API와, Tomcat Servlet API도 함께 다운로드 되어 Dependencies 폴더에 생성된다. 이렇게 연관되어 다운로드 된 Dependencies 들은, [Dependency Hierarchy] 탭에서 확인할 수 있다.
Maven을 사용하지 않았더라면, "class not found exception"을 계속 만나게 되어 필요한 라이브러리들을 하나하나 직접 가져와야 했을 것이다.
'BackEnd > Spring' 카테고리의 다른 글
부트스트랩 다운로드 및 적용하 (0) | 2023.02.02 |
---|---|
[JPA] N+1 문제 (0) | 2023.01.26 |
[Spring] AOP (0) | 2021.09.08 |
[Spring] XML Configuration을 Java Configuration으로 변경하기 (0) | 2021.09.08 |
[Spring] @Component의 역할 (0) | 2021.09.08 |
댓글