9. 의존 관계
프로젝트 의 의존 관 계 는 주로 세 가지 로 나 뉜 다. 의존, 계승, 집적 이다.
의존 관계
의존 관 계 는 가장 자주 사용 하 는 것 이다. 바로 프로젝트 가 다른 프로젝트 에 의존 해 야 한 다 는 것 이다. 예 를 들 어 아파 치 - common 가방, Spring 가방 등 이다.
junit
junit
4.11
test
jar type >
true optional >
임의의 외부 의존 설명 은 다음 과 같은 몇 가지 요 소 를 포함한다.
groupId
, artifactId
, version
, scope
, type
, optional
.그 중 세 개 는 필수 다.이곳 의 version 은 구간 표현 식 으로 표시 할 수 있 습 니 다. 예 를 들 어 (2.0,)
는 >2.0
, [2.0,3.0)
는 2.0<=ver<3.0
을 표시 합 니 다.여러 조건 사이 에 쉼표 로 구분한다. 예 를 들 어 [1,3],[5,7]
.type 은 보통 pom 참조 의존 시 나타 나 고 다른 때 는 사용 하지 않 습 니 다.maven 은 프로그램 이 외부 에 대한 의존 은 프로그램 이 처 한 단계 와 응용 장면 에 따라 달라 질 수 있 기 때문에 maven 의 의존 관 계 는 역할 영역 (scope) 의 제한 이 있다 고 주장 합 니 다.maven 에 서 는
scope
다음 과 같은 수치 가 포함 되 어 있 습 니 다.compile
(컴 파일 범위) copile 은 기본 범위 입 니 다.만약 범 위 를 제공 하지 않 았 다 면, 의존 해 야 할 범 위 는 컴 파일 범위 이다.컴 파일 범 위 는 모든 classpath 에서 사용 할 수 있 으 며, 동시에 압축 될 수 있 습 니 다.provided
provided 의존 은 JDK 나 용기 가 이 의존 을 제공 한 후에 만 사용 할 수 있 습 니 다.예 를 들 어 웹 애플 리 케 이 션 을 개발 했다 면 classpath 를 컴 파일 할 때 servlet API 를 사용 하여 servlet 를 컴 파일 해 야 할 수도 있 지만 포 장 된 WAR 에 이 Servlet API 를 포함 하고 싶 지 않 습 니 다.이 Servlet API JAR 은 응용 서버 나 servlet 용기 에서 제공 합 니 다.제 공 된 범위 의 의존 은 컴 파일 classpath (실행 할 때 가 아 닙 니 다) 에서 사용 할 수 있 습 니 다.그것들 은 전달 적 인 것 도 아니 고 포장 되 지도 않 는 다.runtime
(실행 시 범위) runtime 은 시스템 을 실행 하고 테스트 할 때 필요 하지만 컴 파일 할 때 필요 하지 않 습 니 다.예 를 들 어 컴 파일 할 때 JDBC API JAR 만 필요 하고 실행 할 때 만 JDBC 구동 이 필요 할 수 있 습 니 다.test
(테스트 범위) test 범 위 는 컴 파일 과 실행 에 의존 할 때 필요 하지 않 습 니 다. 테스트 컴 파일 과 테스트 실행 단계 에서 만 사용 할 수 있 습 니 다.system
(시스템 범위) system 범 위 는 provided 와 유사 하지만 로 컬 시스템 의 JAR 파일 에 대한 경 로 를 명시 적 으로 제공 해 야 합 니 다.이렇게 하 는 것 은 로 컬 대상 을 기반 으로 컴 파일 하 는 것 을 허용 하기 위해 서 이 대상 들 은 시스템 라 이브 러 리 의 일부분 이다.이런 구조물 은 항상 사용 할 수 있 을 것 이 고 Maven 도 창고 에서 찾 지 않 을 것 이다.의존 범 위 를 시스템 범위 로 설정 하려 면 시스템 Path 요 소 를 동시에 제공 해 야 합 니 다.이 범 위 는 추천 하지 않 습 니 다.dependency 의
type
는 일반적으로 설정 하지 않 습 니 다. 기본 값 은 jar 입 니 다.type 이 pom 일 때 인용 관 계 를 대표 합 니 다:
org.sonatype.mavenbook
persistence-deps
1.0
pom
이 항목 은 persistence - deps 의 모든 jar 패 키 지 를 의존 라 이브 러 리 로 가 져 옵 니 다.pom 프로젝트 로 일반적인 의존 도 를 한데 묶 을 수 있 는 패키지 방식 을 만 들 수 있 습 니 다. 다른 항목 을 직접 참조 할 수 있 습 니 다. 지정 한 의존 유형 을 pom
pom
으로 지정 하 는 것 을 잊 지 마 십시오.상속 관계
계승 은 중복 을 피 하 는 것 이 고, 마 븐 의 계승 도 마찬가지 이 며, 또 하나의 장점 은 프로젝트 를 더욱 안전하게 하 는 것 이다.프로젝트 간 에 상하 관계 가 존재 할 때 상속 관계 에 속한다.부모 항목 의 설정 은 다음 과 같 습 니 다.
4.0.0
org.clf.parent
my-parent
2.0
pom
org.slf4j
slf4j-api
1.7.7
jar
compile
org.springframework
spring-orm
4.2.5.RELEASE
org.springframework
spring-web
4.2.5.RELEASE
org.springframework
spring-context-support
4.2.5.RELEASE
org.springframework
spring-beans
4.2.5.RELEASE
......
이 때 는 pom 이 어야 합 니 다.프로젝트 의 정확 한 운행 을 위해 서 는 모든 하위 프로젝트 가 의존 항목 의 통 일 된 버 전 을 사용 하도록 해 야 합 니 다. 각 항목 의 의존 항목 과 버 전이 일치 해 야 테스트 와 발표 가 같은 결 과 를 보장 할 수 있 습 니 다.Maven 은 dependency Management 요 소 를 사용 하여 버 전 번호 에 의존 하 는 방식 을 제공 합 니 다.보통 한 조직 이나 프로젝트 의 맨 위 에 있 는 부모 POM 에서 dependency Management 요 소 를 볼 수 있 습 니 다.pom. xml 의 dependency Management 요 소 를 사용 하면 모든 하위 항목 에서 버 전 번 호 를 표시 하지 않 고 의존 할 수 있 습 니 다.Maven 은 dependency Management 요 소 를 가 진 프로젝트 를 찾 을 때 까지 부자 차원 을 따라 위로 올 라 갑 니 다. 그리고 이 dependency Management 요소 에서 지정 한 버 전 번 호 를 사용 합 니 다.부모 항목 이 dependencies 성명 에 의존 하면 하위 항목 은 모두 자동 으로 계 승 됩 니 다.한편, 부모 프로젝트 는 dependency Management 에서 성명 의존 일 뿐 도입 이 이 루어 지지 않 기 때문에 하위 프로젝트 가 표시 해 야 할 성명 에 의존 해 야 합 니 다.하위 프로젝트 에 의존 하지 않 으 면 부모 프로젝트 에서 계승 되 지 않 습 니 다.하위 항목 에 이 의존 항목 을 쓰 고 구체 적 인 버 전이 지정 되 지 않 아야 부모 항목 에서 이 항목 을 계승 할 수 있 으 며, version 과 scope 는 부모 pom 에서 읽 을 수 있 습 니 다.또한 하위 항목 에 버 전 번 호 를 지정 하면 하위 항목 에서 지정 한 jar 버 전 을 사용 합 니 다.만약 어떤 항목 이 이 부모 프로젝트 를 계승 해 야 한다 면 기본 설정 은 다음 과 같 아야 합 니 다.
4.0.0
org.clf.parent.son
my-son
1.0
org.clf.parent
my-parent
2.0
../parent-project/pom.xml
org.springframework
spring-web
org.springframework
spring-beans
중합 관계
기술 의 신속 한 발전 과 각종 사용자 들 이 소프트웨어 에 대한 요구 가 점점 높 아 지면 서 소프트웨어 자체 도 점점 복잡 해 졌 다. 그 다음 에 소프트웨어 설계 자 들 은 각종 방식 으로 개발 하기 시작 했다. 그래서 우리 의 계층 구조, 모듈 개발 을 통 해 코드 의 선명 함 과 재 활용 을 향상 시 켰 다.이 특성 에 맞 게 Maven 도 해당 하 는 설정 을 해 주 었 습 니 다.maven 의 다 중 모듈 관리 도 매우 강력 합 니 다.일반적으로 Maven 은 같은 프로젝트 의 모든 모듈 을 같은 디 렉 터 리 에 배치 하고 모든 하위 디 렉 터 리 는 하나의 모듈 을 대표 합 니 다. 예 를 들 어:
/
pom.xml pom
1/
pom.xml 1 pom
2/
pom.xml 2 pom
총 항목 의 설정 은 다음 과 같 습 니 다.
4.0.0
org.clf.parent
my-parent
2.0
pom
module-1
module-2
module-3
......
......
......
하위 모듈 의 설정 은 다음 과 같 습 니 다.
4.0.0
org.clf.parent.son
my-son
1.0
org.clf.parent
my-parent
2.0
계승 과 집합의 관계
우선, 상속 과 취 합 은 모두 부자 관계 에 속 하 며, 취 합 POM 과 상속 관계 에 있 는 부모 POM 의 패 키 징 은 모두 pom 이다.다른 것 은 취 합 모듈 에 있어 서 어떤 취 합 된 모듈 이 있 는 지 알 지만 취 합 된 모듈 들 은 이 취 합 모듈 의 존 재 를 모른다 는 것 이다.상속 관계 의 부모 POM 에 대해 말하자면, 어떤 하위 모듈 이 그것 과 계승 되 는 지 모 르 지만, 그 하위 모듈 들 은 모두 자신의 부모 POM 이 무엇 인지 알 아야 한다.실제 프로젝트 에서 하나의 POM 은 POM 을 모 으 는 동시에 부모 POM 이기 도 한다. 이 는 특정한 프로젝트 를 계승 했다. 그 자체 에 몇 개의 서브 모듈 을 포함 하 는 동시에 일반적인 의존 관계 가 존재 할 것 이다. 즉, 의존, 계승, 집적 이라는 세 가지 관 계 는 병존 한다.
Maven 계승 가능 한 POM 요소 목록 은 다음 과 같 습 니 다.
groupId
: 프로젝트 그룹 ID, 프로젝트 좌표 의 핵심 요소;version
: 프로젝트 버 전, 프로젝트 좌표 의 핵심 요소;description
: 프로젝트 의 설명 정보;organization
: 프로젝트 의 조직 정보;inceptionYear
: 프로젝트 의 창립 년도;url
: 프로젝트 의 url 주소 develoers
: 프로젝트 의 개발 자 정보;contributors
: 프로젝트 의 공헌 자 정보;distributionManagerment
: 프로젝트 의 배치 정보;issueManagement
: 결함 추적 시스템 정보;ciManagement
: 프로젝트 의 지속 적 인 계승 정보;scm
: 프로젝트 의 버 전 관리 정보;mailingListserv
: 프로젝트 의 메 일 링 리스트 정보;properties
: 사용자 정의 Maven 속성;dependencies
: 프로젝트 의 의존 설정;dependencyManagement
: 눈 에 띄 는 의존 관리 설정;repositories
: 프로젝트 의 창고 배치;build
: 프로젝트 의 소스 디 렉 터 리 설정, 출력 디 렉 터 리 설정, 플러그 인 설정, 플러그 인 관리 설정 등 을 포함한다.reporting
: 프로젝트 의 보고 출력 디 렉 터 리 설정, 보고 플러그 인 설정 등 을 포함한다.이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.