TOP
본문 바로가기
[Java]/Spring Boot

[Java] Spring Boot: Maven Repository

by 기록자_Recordian 2025. 4. 15.
728x90
반응형
이전 내용
 

[Java] 스프링부트: Spring Initializr - Dependencies

이전 내용 [Java] Spring Boot: 제어 역전, 의존성 주입이전 내용 [Java] Spring Boot - 기본 구조, "Hello World" 띄워보기이전 내용 [Java] 인텔리제이 새 프로젝트 생성하기이전 내용 [Java] 스프링부트를 위한

puppy-foot-it.tistory.com


Maven Repository

 

Maven Repository는 Maven 빌드 도구에서 사용하는 중앙 저장소로, Java 및 기타 언어로 작성된 소프트웨어 구성 요소를 저장하고 관리하는 곳이다. Maven은 프로젝트 관리 도구로, 주로 의존성 관리와 빌드 프로세스를 자동화하는 역할을 한다. 

 

https://mvnrepository.com/

 

- 의존성(dependency): Maven 프로젝트에서 사용하는 외부 라이브러리나 구성 요소를 의미한다. 이러한 의존성은 프로젝트의 pom.xml 파일에 명시되어 Maven에 의해 관리된다.


- 리포지토리(repository): Maven은 의존성을 다운로드하고 관리하기 위해 여러 개의 리포지토리를 사용한다. 리포지토리는 크게 두 가지 유형으로 나누어질 수 있다.

  • 중앙 리포지토리(Central Repository): Maven 중앙 서버에 호스팅된 리포지토리로, Maven 사용자들이 공통적으로 사용하는 라이브러리들이 저장되어 있다. 기본적으로 Maven은 이 중앙 리포지토리에서 의존성을 다운로드한다.
  • 로컬 리포지토리(Local Repository): 각 사용자의 개발 환경에 생성되는 리포지토리로, 의존성이 다운로드될 때 여기에 저장된다.
  • 사설 리포지토리(Private Repository): 회사나 조직에서 특정 라이브러리나 제품을 저장하기 위해 구축한 리포지토리로, 보통 Nexus, Artifactory 등의 도구를 사용한다.

[Maven Repository 기능]

  • 의존성 관리: Maven은 pom.xml 파일에서 선언한 의존성을 자동으로 다운로드하고 관리한다. 필요에 따라 필요한 버전을 해결하고, 의존성 트리를 구성하여 복잡한 의존성 문제를 처리한다.
  • 버전 관리: Maven Repository는 다양한 버전의 라이브러리를 동시에 저장할 수 있다. 이를 통해 특정 버전의 라이브러리를 명시적으로 지정하거나, 안정적인 버전을 사용할 수 있다.
  • 플러그인 관리: Maven은 빌드 프로세스를 자동화하기 위해 다양한 플러그인들을 사용한다. 이 플러그인들도 Maven Repository에서 다운로드하여 사용할 수 있다.
  • 현지화(localization): 로컬 리포지토리로 의존성을 다운로드하여 사용하면, 동일한 의존성을 반복적으로 다운로드할 필요가 없으므로, 빌드 속도를 개선할 수 있다.
  • 오프라인 모드: Maven은 로컬 리포지토리에 이미 다운로드된 의존성을 사용하여 오프라인 상태에서도 빌드 작업을 수행할 수 있다.

라이브러리 인텔리제이에 추가하기

 

예를 들어, JUnit 라이브러리를 추가해야 한다고 가정하면

JUnit을 검색하고 나오는 결과 중 JUnit을 클릭하고

 

이중 하나의 버전을 선택한 뒤,

하단으로 내려가면

Maven | Gradle | SBT | Mill | Ivy 등등의 탭이 있다.

이중에서 필자는 Gradle 이므로, Gradle을 선택하고

 

Scope와 Format 두 가지를 선택해야 하는데, 

 

★ Scope

Repository Scope는 Maven과 같은 빌드 도구에서 의존성의 범위와 수명을 정의하는 개념이다. 이것은 특정 의존성이 프로젝트의 빌드, 테스트, 실행 등에 어떻게 사용되는지를 결정하며, Maven에서 의존성을 그룹화하여 관리하는 데 중요한 역할을 한다.

 

[Scope 유형]

  • Compile (기본 스코프): 기본 스코프이며, 의존성이 컴파일, 테스트, 실행 단계 모두에서 사용
  • Provided: 해당 의존성이 실행 환경(예: JDK, Servlet Container)에서 제공된다고 가정하는 스코프다. 이 경우, 컴파일 시에는 필요하지만, 패키징할 때는 포함되지 않는다.
  • Runtime: 컴파일 시에는 필요하지 않지만, 실행 시에 필요한 의존성이다. 이 스코프는 일반적으로 코드가 실행될 때 반드시 필요한 라이브러리를 포함한다.
  • Test: 테스트 코드에서만 사용되는 의존성이다. 이 스코프에 선언된 라이브러리는 컴파일과 실행 시에는 포함되지 않고, 테스트를 수행할 때만 사용된다.
  • System: 시스템 경로에 위치한 의존성을 사용하고자 할 때 사용되는 스코프이다. 이 경우, 의존성을 로컬 시스템에 직접 지정해야 하며, Maven이 해당 파일을 참조할 수 있게 설정해야 한다. 일반적으로 추천되지 않는 스코프다.

★ Format

  • Groovy Long: Groovy Long 포맷은 Groovy 언어에서 작성된 스크립트나 프로그램에서 사용되는 기본적인 형식이다. 코드의 가독성과 유지보수를 용이하게 하기 위해 긴 형식을 유지하며, 메서드 호출, 변수를 긴 형태로 명시적으로 사용할 때 적합하다.
  • Groovy Short: Groovy Short 포맷은 Groovy 코드를 작성할 때 간결하고 짧은 형식을 선호할 때 사용된다. 이는 전체 코드의 가독성을 높이고, 짧은 코드로 기능을 구현하기 위해 사용된다.
  • Kotlin: Kotlin 포맷은 Kotlin 언어에서 작성된 스크립트나 프로그램에서 사용된다. Kotlin은 현대적이고 간결한 구문을 제공하여, 다른 JVM 언어와 마찬가지로 더욱 쉽게 돕고자 하며, 호환성을 높이는 데 기여한다.

설명에 따라 Compile 스코프와 Groovy Short 두 가지를 선택한 후, 코드 부분에 마우스를 클릭하면 코드가 자동으로 복사된다.

 

그리고 인텔리제이로 넘어와서 build.gradle의 dependencies {} 내의 가장 마지막 줄에 복사하고, 버전을 지워준다. (의존성 버전 문제 방지 위함)

주석은 삭제해도 된다.


다음 내용

 

728x90
반응형