2011-02-11 5 views
14

일반적으로, 나는 다음과 같은 거울 내 메이븐에서 구성한 settings.xml받는다는 저장소 거울

<mirror> 
    <id>internal-repository</id> 
    <url>http://build.idaho.local/wtp_repository</url> 
    <mirrorOf>*</mirrorOf> 
</mirror> 

나의 이해는이 거울은 단지이 내부에서 그들을 찾을 것 즉, 인터넷에서 종속성을 다운로드하는 메이븐을 방지한다는 것입니다 저장소. 나는이 내부 저장소에없는 종속성을 추가 할 때마다

그러나, 나는 위의 텍스트를 주석과에 다음을 추가 할 필요가 프로젝트의 pom.xml

<repository> 
    <id>internal-repository</id> 
    <url>http://build.idaho.local/wtp_repository</url> 
</repository> 

나는이 변화하게 Maven은 로컬 repo에서 의존성을 검사 할 것이고, 발견되지 않으면 인터넷에서 로컬 repo로 다운로드 할 것입니다. 필요한 종속성을 갖게되면 구성을 다시 변경합니다.

내가 원하는 동작을 얻는 방법이 있습니까? <repository>을 모든 프로젝트의 pom.xml에 추가 할 필요없이 항상 내부 repo를 확인한 다음 공용 (인터넷) repos를 확인 하시겠습니까?

이상 settings.xml에이 저장소를 한 번만 지정하고 싶지만 미러를 구성 할 수있는 것 같습니다.

답변

0

상위 섹션에 저장소 섹션을 추가하십시오. 그리고 모든 프로젝트가 슈퍼 폼에서 확장되도록하십시오.

그래서 다른 모든 프로젝트 pom에는 이와 같이 슈퍼 폼에서 확장 할 상위 섹션이 있습니다.

<parent> 
    <groupId>com.ddd.ddd.ddd</groupId> 
    <artifactId>ddd-ddd-parent</artifactId> 
    <version>1.1.1-SNAPSHOT</version> 
    <relativePath>./config/superpom/pom.xml</relativePath> 
</parent> 

이렇게하면 하나의 pom 파일에만 저장소 섹션을 만들 수 있습니다. junit, log4j 등의 모든 프로젝트에 공통된 종속성을 추가 할 수도 있습니다.

settings.xml 파일에 있습니다. 이것을 추가하여 로컬 저장소를 구성 할 수 있습니다.

<localRepository>C:/myBox/maven.repo</localRepository> 
14

당신은 중앙 저장소에 거울을 사용하거나 일부 ID로 식별 저장소를 제외 받는다는 구성을 시도 할 수 있습니다.

<mirror> 
    <id>internal-mirror</id> 
    <url>http://build.idaho.local/wtp_repository</url> 
    <mirrorOf>central</mirrorOf> 
</mirror> 

또는

<mirror> 
    <id>internal-mirror</id> 
    <url>http://build.idaho.local/wtp_repository</url> 
    <mirrorOf>*,!internal-repository</mirrorOf> 
</mirror> 

예는 maven settingsguide to mirror settings에서 적응되었다.

1

거울을 제대로 구성하거나 사용하지 않았을 수 있습니다.

이상적으로는 미러로 지정하는 내용은 repository manager이어야하며 요청 된 종속성을 인터넷의 다양한 리포지토리에서 투명하게 다운로드하고 캐시하여 미러에서 이후의 다운로드를 허용해야합니다.

2

이 질문은 어쨌든 꽤 오래지만 :

이 설정에 <profile>을 넣습니다.

... 
    <profile> 
     <id>devel-repos</id> 

     <repositories> 
      <repository> 
       <id>repo-release</id> 
       <url>http://repohost:repoport/path/to/release/repo</url> 
      </repository> 
      <repository> 
       <id>repo-snapshot</id> 
       <url>http://repohost:repoport/path/to/snapshot/repo</url> 
      </repository> 
     </repositories> 
    </profile> 
... 

그럼 <activeProfile>로서 상기 프로파일 세트 <repository> 소자를 사용하여 내부 저장소를 지정하는 XML. 그러면 모든 maven 호출에 대한 프로파일이 활성화됩니다.

... 
<activeProfiles> 
    <activeProfile>devel-repos</activeProfile> 
</activeProfiles> 
... 

이 여러 저장소 정의를 피하지 않지만, 그것은 당신에게 가장 중요한 것은을 제공 : 모든 settings.xml에 집중되어 있고 pom.xml의 청소 (휴대용)입니다.

0

settings.xml에서 거울 설정을 제거하고 다음 코드를 입력하면 효과적입니다.

<profiles> 
    <profile> 
     <id>profile-1</id> 
     <repositories> 
      <repository> 
       <id>internal-repository-1</id> 
       <url>http://build.idaho.local/wtp_repository</url> 
      </repository> 
     </repositories> 
    </profile> 
</profiles> 
<activeProfiles> 
    <activeProfile>profile-1</activeProfile> 
</activeProfiles> 
관련 문제