2011-02-28 2 views
3

나는 메이븐 2 멀티 모듈 프로젝트를 가지고 모든 것을 내 로컬 체크 아웃 된 소스에서 가져온되어 있는지 확인하고자합니다.(원격) 저장소가없는 Maven?

  • 소스가있는 모듈에 대해 Maven에 절대로 아무것도 다운로드하지 않도록 할 수 있습니까? 원격 저장소를 비활성화해야합니까?
  • 합니까 Maven은 항상 부양 가족 각각에 대해 다시 추출 후 로컬 저장소에 모듈을 설치, 그리고 고가의 길을 가야한다?
  • 합니까 메이븐 로컬 소스가 변경되었을 경우 자동으로 먼저 모듈에 대한 종속성을 다시 컴파일하고 종속을 컴파일?

답변

10

그것의 소스를 가지고있는 모듈 아무것도를 다운로드 결코 메이븐을 말할 수 있습니까?

No. Maven 2는 현재 모듈이 빌드되는 동안 만 "보게됩니다". 더하기 측면에서 모듈에서 Maven을 실행하여 트리의 일부를 빌드 할 수 있습니다.

내가 원격 저장소를 사용하지 않도록해야합니까?

예, "오프라인"옵션 -o 또는 -offline을 사용하십시오. 또는 파일이없는 프록시와 함께 settings.xml을 사용하십시오. 그래도 당신이 원하는 것이 아닙니다.

Maven은 항상 모듈을 로컬 저장소에 설치하고 각 종속 항목에 대해 다시 추출해야하는 비싼 방법이 있습니까?

예는하지만 비용이 아니다. 빌드하는 동안 파일이 복사됩니다 (10 년 전에 비쌌습니다). 의존성이 사용되면 Maven은 파일 경로를 자바 프로세스에 추가하기 만하면된다. 따라서 파일은 다시 복사되거나 수정되지 않습니다. Maven은 로컬 저장소의 파일이 변경되지 않는다고 가정합니다 (또는 다운로드/설치가 수행 될 때 한 번만 변경됨).

로컬 소스가 변경된 경우 Maven이 자동으로 모듈의 종속성을 자동으로 재 컴파일합니까?

아니요. Maven 3에 대한 계획이 있지만 그와 같은 옵션을 찾을 수 없습니다.

문제를 해결하려면 로컬 프록시 (예 : Nexus)를 설치해야합니다. 이 지역 reposiotory ($USER_HOME/.m2/repository)에서 사용할 수없는 경우에만

+1

와우! 우린 나란히 앉아서 타이핑 했어야 했어. :) – Nishant

+1

@Nishant : 그것은 일어납니다 :-) –

7
  1. 메이븐 다운로드 거즈 (의존성). 아무것도 다운로드하지 않으려면 오프라인 모드를 사용하십시오. 스위치 -o을 사용하여이 작업을 수행 할 수 있습니다. 예 :

    mvn -o clean install 
    
  2. 비싸지 않습니다. 당신이 완벽한 부모 프로젝트를 빌드하는 경우, 모든 모듈을 구축 한 다음 로컬 저장소에 아티팩트를 복사합니다.그런 다음 프로젝트에 의존성이있는 프로젝트를 빌드하면 Maven은 하드 디스크의 로컬 저장소에서 현재 프로젝트를 위해 생성 될 패키지로 복사합니다.

  3. 아니오. 나는 타났다. Maven은 의존성을 자동으로 컴파일하지 않습니다. Maven Reactor Plug-in이라는 플러그인이 있습니다. 이 플러그인을 사용하면 프로젝트가 빌드되기 전에 프로젝트의 종속성을 빌드 할 수 있습니다.