Dependency의 속성 및 정의
Maven POM에 dependency를 추가할 때 다음과 같은 형식으로 추가합니다.
코드 블럭 | ||||
---|---|---|---|---|
| ||||
<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 |
Version | Artifact의 버전 정보 | O |
Type | Artifact의 유형 | X |
Scope | Artifact의 적용 범위 (test, runtime, compile, provided, import, system 등 다양한 범위가 있음)
| X |
Classifier | Artifact에 여러 개의 식별자를 두고 싶을 때 사용 | X |
System Path | Scope가 system인 경우 <systemPath> 를 추가해야 함 | X |
Local Repository에는 어떻게 저장되나?
Local Repository에 dependency를 저장할 때에는 Group ID, Artifact ID, Version에 따라서 다음과 같이 저장합니다.
코드 블럭 | ||||
---|---|---|---|---|
| ||||
├── 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를 참조하고 있습니다. 대규모 프로젝트의 경우 굉장히 복잡한 구조를 가지고 있습니다.
...