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: 프로젝트 의 보고 출력 디 렉 터 리 설정, 보고 플러그 인 설정 등 을 포함한다.
  • 좋은 웹페이지 즐겨찾기