Maven 프로젝트 의 Maven Dependencies 해결 방법 에 대한 상세 한 설명

1.오늘 Maven 프로젝트 를 만 들 었 습 니 다.pom.xml 파일 에 의존 을 도입 한 후에 프로젝트 구조 에 Maven Dependencies 파일(아래 그림)이 없 는 것 을 발 견 했 습 니 다.그러나 자바 Build Path 에서 Maven Dependencies 파일(아래 그림)을 찾 을 수 있 습 니 다.


그러나 pom.xml 파일 에 추 가 된 의존 jar 패키지 도 프로젝트 에 자동 으로 다운로드 되 지 않 습 니 다.update Project 도 마찬가지 입 니 다.그래서 인터넷 에서 많은 방법 을 찾 았 습 니 다.시도 해 보 았 지만 소 용이 없 었 습 니 다.결국 자신의 pom.xml 파일 을 보 니 의존 하기 전에라 는 탭(아래 그림)을 썼 습 니 다.자 료 를 찾 아 보 니 이 라벨 의 역할 은 성명 의존 일 뿐 의존 도입 을 실현 하지 않 기 때문에 jar 가방 의 도입 이 없 으 면 Maven 프로젝트 는 Maven Dependencies 파일 을 표시 하지 않 습 니 다.이 탭 을 제거 하면 문제 가 해결 되 고 Maven Dependencies 파일 이 Maven 프로젝트 에 나타 납 니 다.

2.인터넷 에서 Maven Dependencies 파일 의 부족 을 해결 하 는 다른 방법:
첫 번 째:Maven 지원 이 켜 지지 않 았 습 니 다.이 경우 Eclipse 가 자체 적 으로 가 져 온 Maven 이나 자신 이 설치 한 Maven 은 서 비 스 를 열지 않 습 니 다.
해결 방법:Maven 프로젝트-->Maven-->Dependency Management 사용
(일부 Maven 버 전이 Enable Dependency Management 옵션 이 없 을 수도 있 습 니 다)
두 번 째:classpath 파일 문제 나.project 파일 문제:
해결 방법:
(1).classpath 파일 에 다음 코드 를 추가 합 니 다.

<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
		<attributes>
			<attribute name="maven.pomderived" value="true"/>
			<attribute name="org.eclipse.jst.component.dependency" value="/WEB-INF/lib"/>
		</attributes>
	</classpathentry>
(2).project 파일 의에 다음 줄 문 구 를 추가 합 니 다.

<nature>org.eclipse.m2e.core.maven2Nature</nature>
	<natures>
		<nature>org.eclipse.jem.workbench.JavaEMFNature</nature>
		<nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature>
		<nature>org.eclipse.jdt.core.javanature</nature>
		<nature>org.eclipse.m2e.core.maven2Nature</nature>
		<nature>org.eclipse.wst.common.project.facet.core.nature</nature>
		<nature>org.eclipse.wst.jsdt.core.jsNature</nature>
	</natures>
세 번 째:프로젝트-->properties-->Deployment Assembly-->Add-->java build path Entries-->Maven Dependencies--Finish
네 번 째:프로젝트 는 비 maven 프로젝트(상황 이 적 음)
해결 방법:오른쪽 단추 항목-->configure-->Convert to Maven Project
3.dependency Management 와 dependencies 의 차이 점:
이 부분 은 블 로그 에서 이전 되 었 습 니 다.
앞에서 문제 가 발생 한 것 은 dependency Management 와 dependencies 의 차 이 를 잘 알 지 못 했 기 때문에 이 부분 은 주로 pom.xml 파일 에서 이 두 탭 의 차 이 를 요약 합 니 다.
1.Depency Management 의 응용 장면:
우리 의 프로젝트 모듈 이 많 을 때 우 리 는 Maven 관리 프로젝트 를 사용 하 는 것 이 매우 편리 하고 구축,문서,보고,의존,scms,발표,배포 방법 을 관리 하 는 데 도움 을 줍 니 다.편리 하 게 코드 를 컴 파일 하고 의존 관리,바 이 너 리 라 이브 러 리 관리 등 을 할 수 있 습 니 다.
우리 의 모듈 이 매우 많 기 때문에 우 리 는 또 한 층 을 추상 화하 여 itoo-base-parent 를 추출 하여 하위 프로젝트 의 공공 의존 을 관리한다.프로젝트 의 정확 한 운행 을 위해 서 는 모든 하위 프로젝트 가 의존 항목 의 통 일 된 버 전 을 사용 하도록 해 야 합 니 다.각 항목 의 의존 항목 과 버 전이 일치 해 야 테스트 와 발표 가 같은 결 과 를 보장 할 수 있 습 니 다.
프로젝트 맨 위 에 있 는 POM 파일 에서 dependency Management 요 소 를 볼 수 있 습 니 다.이 요 소 를 통 해 jar 패키지 의 버 전 을 관리 하고 하위 항목 에서 표시 되 지 않 고 의존 하 는 버 전 번 호 를 참조 하도록 합 니 다.Maven 은 dependency Management 요 소 를 가 진 프로젝트 를 찾 을 때 까지 부자 차원 을 따라 위로 올 라 갑 니 다.그리고 이 dependency Management 요소 에서 지정 한 버 전 번 호 를 사용 합 니 다.
우리 프로젝트 의 응용 을 살 펴 보 자.  pom 상속 관계 도:

itoo-base-parent(pom.xml)

<dependencyManagement>
		
		<dependencies>
			<dependency>
				<groupId>org.eclipse.persistence</groupId>
				<artifactId>org.eclipse.persistence.jpa</artifactId>
				<version>${org.eclipse.persistence.jpa.version}</version>
				<scope>provided</scope>
			</dependency>
			
			<dependency>
				<groupId>javax</groupId>
				<artifactId>javaee-api</artifactId>
				<version>${javaee-api.version}</version>
			</dependency>
		</dependencies>
	</dependencyManagement>
itoo-base(pom.xml)

<!--    -->
<parent>
		<artifactId>itoo-base-parent</artifactId>
		<groupId>com.tgb</groupId>
 
		<version>0.0.1-SNAPSHOT</version>
		<relativePath>../itoo-base-parent/pom.xml</relativePath>
	</parent>
		<modelVersion>4.0.0</modelVersion>
		<artifactId>itoo-base</artifactId>
		<packaging>ejb</packaging>
		
		<!--    -->
		<dependencies>
		<dependency>
			<groupId>javax</groupId>
			<artifactId>javaee-api</artifactId>
		</dependency>
		
		<dependency>
			<groupId>com.fasterxml.jackson.core</groupId>
			<artifactId>jackson-annotations</artifactId>
		</dependency>
		
		<dependency>
			<groupId>org.eclipse.persistence</groupId>
			<artifactId>org.eclipse.persistence.jpa</artifactId>
			<scope>provided</scope>
		</dependency>
	</dependencies>
</project>
이렇게 하 는 장점:프로젝트 의 버 전 번 호 를 통일 적 으로 관리 하고 응용 하 는 각 프로젝트 의 의존 과 버 전이 일치 해 야 테스트 와 발표 가 같은 성 과 를 확보 할 수 있 기 때문에 최상 위 pom 에서 공 통 된 의존 관 계 를 정의 할 수 있 습 니 다.또한 사용 하 는 모든 하위 항목 에서 버 전 번 호 를 설명 하 는 것 을 피 할 수 있 습 니 다.이렇게 업그레이드 하거나 다른 버 전 으로 전환 하려 면 부모 용기 에서 만 업데이트 하고 키 항목 의 수정 이 필요 하지 않 습 니 다.키 항목 에 다른 버 전 번호 가 필요 할 때 dependencies 에서 버 전 번 호 를 설명 하면 됩 니 다.하위 클래스 는 하위 클래스 성명 의 버 전 번 호 를 사용 하고 부모 클래스 버 전 번 호 를 계승 하지 않 습 니 다.
2、Dependencies:
dependency Management 에 비해 모든 성명 이 dependencies 에서 의 의존 도 는 자동 으로 도입 되 고 모든 하위 항목 에 의 해 계승 되 는 것 을 기본 으로 합 니 다.
3.구별:
(1)dependencies : dependencies 에 있 는 모든 의존 도 를 자동 으로 도입 하고 모든 하위 항목 에 의 해 계승 되 는 것 을 기본 으로 합 니 다.프로젝트 에 의존 항목 을 쓰 지 않 으 면 부모 프로젝트 계승(속성 전부 계승)에서 부모 프로젝트 dependencies 에 의존 항목 을 설명 합 니 다.
(2)dependencyManagement : 이 탭 은 성명 의존 일 뿐 도입 이 이 루어 지지 않 기 때문에 하위 항목 에 표시 해 야 할 성명 에 의존 해 야 합 니 다.하위 프로젝트 에 의존 하지 않 으 면 부모 프로젝트 에서 계승 되 지 않 습 니 다.하위 항목 에 이 의존 항목 을 쓰 고 구체 적 인 버 전이 지정 되 지 않 아야 부모 항목 에서 이 항목 을 계승 할 수 있 으 며,version 과 scope 는 부모 pom 에서 읽 을 수 있 습 니 다.또한 하위 항목 에 버 전 번 호 를 지정 하면 하위 항목 에서 지정 한 jar 버 전 을 사용 합 니 다.
(3)dependency Management 중의 dependencies 는 프로젝트 의 의존 항목 에 영향 을 주지 않 습 니 다.독립 dependencies 요 소 는 프로젝트 의 의존 항목 에 영향 을 줍 니 다.외부 dependencies 요소 에 버 전 정 보 를 가리 키 지 않 았 을 때 dependency Management 의 dependencies 요소 가 작 동 합 니 다.하 나 는 프로젝트 의존 입 니 다.하 나 는 Maven 프로젝트 의 다 중 모듈 상황 일 때 관리 제어 에 의존 합 니 다.
Maven 프로젝트 에 Maven Dependencies 솔 루 션 이 부족 하 다 는 것 을 상세 하 게 설명 하 는 글 은 여기까지 입 니 다.Maven Dependencies 내용 이 부족 하 다 면 예전 의 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 응원 부 탁 드 리 겠 습 니 다!

좋은 웹페이지 즐겨찾기