버전 비교

  • 이 줄이 추가되었습니다.
  • 이 줄이 삭제되었습니다.
  • 서식이 변경되었습니다.

Dependency의 속성 및 정의

Maven POM에 dependency를 추가할 때 다음과 같은 형식으로 추가합니다.

코드 블럭
languagebash
linenumberstrue
<dependency>
    <groupId>group-a</groupId>
    <artifactId>artifact-b</artifactId>
    <version>1.0</version>
    <type>bar</type>
    <scope>runtime</scope>
</dependency>

dependency의 각 속성은 다음과 같으며 좀더 상세한 설명은 Maven 페이지를 참고하십시오.

속성설명필수
Group ID

Java의 패키지와 같은 개념

Artifact의 그룹

O
Artifact ID

Artifact의 식별자

Artifact 유형이 여러 가지가 있지만 대표적으로 .jar .war .ear 등이 있음

Artifact는 소스코드와 JavaDoc이 같이 포함될 수 있음

O
VersionArtifact의 버전 정보O
TypeArtifact의 유형X
Scope

Artifact의 적용 범위 (test, runtime, compile, provided, import, system 등 다양한 범위가 있음)

  • compile이 기본값(모든 classpath에 적용)
  • test는 테스트 코드 컴파일 및 테스트 실행에만 적용하라는 의미
  • runtime은 실행시에만 적용하라는 의미(컴파일에는 필요하지 않음)
  • provided는 컴파일할때에는 적용이 되지만 패키징할 때에는 빠짐
  • system은 repository에서 찾지 않으며 별도로 <systemPath> 를 추가하고 .jar 파일의 경로를 추가해야 함
X
ClassifierArtifact에 여러 개의 식별자를 두고 싶을 때 사용X
System PathScope가 system인 경우 <systemPath> 를 추가해야 함X

Local Repository에는 어떻게 저장되나?

Local Repository에 dependency를 저장할 때에는 Group ID, Artifact ID, Version에 따라서 다음과 같이 저장합니다.

코드 블럭
languagetext
linenumberstrue
├── antlr                                               >> Group ID : antlr
    └── antlr                                           >> Artifact ID : antlr
        ├── 2.7.2                                       >> Version : 2.7.2
        │   ├── _remote.repositories
        │   ├── antlr-2.7.2.jar
        │   ├── antlr-2.7.2.jar.sha1
        │   ├── antlr-2.7.2.pom
        │   └── antlr-2.7.2.pom.sha1
        └── 2.7.7
            ├── _remote.repositories
            ├── antlr-2.7.7-sources.jar.lastUpdated
            ├── antlr-2.7.7.jar
            ├── antlr-2.7.7.jar.sha1
            ├── antlr-2.7.7.pom
            └── antlr-2.7.7.pom.sha1

├── ch
    └── qos
        └── logback                                     >> Group ID : ch.qos.logback
            └── logback-classic                         >> Artifact ID : logback-classic
                └── 1.2.3                               >> Version : 1.2.3
                    ├── _remote.repositories
                    ├── logback-classic-1.2.3-sources.jar
                    ├── logback-classic-1.2.3-sources.jar.sha1
                    ├── logback-classic-1.2.3.jar
                    ├── logback-classic-1.2.3.jar.sha1
                    ├── logback-classic-1.2.3.pom
                    └── logback-classic-1.2.3.pom.sha1

Maven Dependency의 의존 구조

다음은 Maven POM의 dependency를 구조화한 도식입니다. 프로젝트에 dependency를 추가하는 경우 추가한 dependency는 또다른 dependency를 참조하고 있습니다. 대규모 프로젝트의 경우 굉장히 복잡한 구조를 가지고 있습니다.

...