2014-04-02 1 views
0

내 네트워크에 넥서스 리포 (nexus repo)가 있습니다. 빌드 서버에서 Settings.XML의에서 우리는 우리가 공공의 repos에 대해 정의 된 프록시 저장소의 번호가이 빌드 서버에서settings.xml에서 mirrorOf *를 사용하면 maven 리포지토리를 어디에서 정의해야합니까?

<mirror> 
    <id>company.com</id> 
    <name>nexus</name> 
    <url>http://build.company.com/nexus/content/groups/public/</url> 
    <mirrorOf>*</mirrorOf> 
</mirror> 

를 가지고 있고, 나는 호스팅의 repo에서 일부 상업적으로 허가 된 유물이있다.

그리고 프로필 - 메이븐이없이 부모님의 치어 (넥서스에서 아티팩트를) 해결할 수 :

<profiles> 
    <profile> 
    <id>repos</id> 
    <repositories> 
     <repository> 
     <id>my-local-repo</id> 
     <name>bootstrapthingy</name> 
     <url>http://build.company.com/nexus/content/groups/public/</url> 
     <releases> 
      <enabled>true</enabled> 
     </releases> 
     <snapshots> 
      <enabled>true</enabled> 
      <checksumPolicy>fail</checksumPolicy> 
      <updatePolicy>always</updatePolicy> 
     </snapshots> 
     </repository> 
    </repositories> 
    </profile> 
</profiles> 
<activeProfiles> 
    <activeProfile>repos</activeProfile> 
</activeProfiles> 

내 질문을 오늘 :

나는 또한 제거한

내 모든

<repositories> 

부모 POM의 태그 (모든 프로젝트가 결국 상속해야 함)가 상속되며 모든 것이 제대로 작동하는 것처럼 보입니다.

잘 지내십니까? 나는 내가 최선을 다해 모범 사례를 생각하는 것을 끝내는 것처럼 보입니다. 최근에 나는 정보를 어디에 보관해야 할 것인가?

내 저장소가 이제 Nexus 수준에서 정의 되었기 때문에 더 이상 소스 코드가 제어되지 않는 요소가 내 빌드에 포함되어있어 귀찮습니다.

+0

"미러"를 사용하는 것은 정말 나쁜 습관입니다. 가시성 및 이슈 형식이 다른 여러 저장소 (예 : 스냅 샷 대 릴리스 또는 프로젝트 종속성 대 빌드 플러그인)가있는 모든 유연성이 느슨합니다. – JBaruch

+1

그가 Nexus 서버의 이슈 형식을 분리하고 개발자를위한 "올인원"저장소 그룹을 제공한다면 mirrorOf *의 단점을 실제로 볼 수 없습니다. 무엇 때문에? 플러그인과 인공물은 모두 중앙에 있습니다 - 그룹 ID로 구별됩니다. 그 정도면 충분합니다. 과용하지 마십시오 :) – wemu

+2

나는 당신이 올바른 길에 있다고 생각합니다. @ wemu의 대답을 참조하십시오. 게다가, 만약에 대비해'settings.xml' (같은 그룹을 가리킴)에''를 추가 할 것을 권한다. – carlspring

답변

1

예 옳은 길을 가고 있다고 주장합니다.

Maven은 인프라에 대해 생각하고 계획을 세우는 것이 좋습니다. 이를 통해 인프라 측면에서 프로젝트 관심사를 분리합니다. 프로젝트 구성 설정은 pom.xml로 이동하면서 인프라 구성을 settings.xml에 넣습니다.

회사 미러/프록시는 인증 및 환경 설정과 함께 (인프라가 변경 될 수 있음) settings.xml로 이동합니다 그 프로젝트는 독립적입니다!)

일반적으로 프로젝트는 프로젝트 별 리포지토리에 의존하지 않습니다. 그들은 거의 모든 경우에 넥서스 서버를 사용할 수 있습니다 (명백한 SNAPSHOT 의존성을 말하십시오). 그래서 pom.xml에 저장소가없는 연습은 괜찮습니다. URL의 변경 및 빌드는 다른 위치에서 이슈를 요청해서는 안됩니다. 그것은 (모든 종류의 불안정한 원격 저장소를 넥서스에 추가하는 것처럼) 빌드 재현 능력을 위험에 빠뜨립니다.

저는 회사 내에서 프로젝트의 빌드가 자체 유지 관리되지 않는다고 생각하거나 (또는 ​​간단히 인정해야합니다.) 생각합니다. 대부분의 오픈 소스 프로젝트는 공통 공유 인프라가 없기 때문에 (또는 아래에서 고통을 겪을 수 있습니다)? 당신은 최선을 다해야하지만 settings.xml에서 해결 된 인프라 문제는 프로젝트가 더 이상 필요하지 않다는 것을 의미합니다. 프로와 죄수를 가졌습니다. 그것에 대해서는 의심의 여지가 없습니다.

+0

답변 해 주셔서 감사합니다. 나는 수수께끼를 묘사 한 페이지를 발견했다. http://javamoods.blogspot.co.uk/2009/03/maven-repositories-put-in-pom-or.html -이 모든 정보로 무장 한, 나는 pom에 repo가 ​​없다고 확신한다. 가야할 길입니다! – Jepper

+0

maven들도 비슷한 블로그 게시물을 가지고 있습니다 : http://blog.sonatype.com/2009/02/why-putting-repositories-in-your-poms-is-a-bad-idea/ (지옥은 2009 년이었습니다.) – wemu

관련 문제