문제

나는 유지에 관심이있다 Maven 2 조직을위한 저장소. 도움이 될 포인터와 함정은 무엇입니까?

코드를 공개 할 때 자신의 아티팩트를 리포지토리에 다운로드하거나 게시 할 때 표준을 설정할 때 사용자가 따라야 할 지침은 무엇입니까? 이런 종류의 물건에 대해 어떤 종류의 거버넌스/규칙이 있습니까? 개발자 가이드/문서에 무엇을 포함 시키십니까?

업데이트: 우리는 Nexus를 서서 매우 행복했습니다. Sal의 대부분의 지침을 따르고 문제가 없었습니다. 또한 Hudson CI 서버를 통해 스냅 샷 아티팩트의 배포 및 자동화 된 빌드/배포를 제한했습니다. Hudson은 모든 업스트림/다운 스트림 프로젝트 종속성을 분석 할 수 있으므로 컴파일 문제, 테스트 실패 또는 기타 위반으로 인해 빌드가 중단되면 배포가 발생하지 않습니다. 메타 데이터가 두 버전간에 변경되었으므로 Maven2/Maven3에서 스냅 샷 배포를 수행하는 데 지쳐야합니다. "Hudson Only"스냅 샷 배포 전략이이를 완화합니다. 우리는 릴리스 플러그인을 사용하지 않지만 주위에 배관을 썼습니다. 버전 플러그인 스냅 샷을 옮길 때 릴리스. 우리는 또한 m2eclipse를 사용하며 Nexus와 매우 잘 작동하는 것 같습니다. 설정 파일에서 Nexus를 볼 수 있고 거기에서 조회를 위해 아티팩트 정보를 색인하는 것을 알고 있습니다. (내 내부 스냅 샷을 완전히 색인화하기 위해 해당 설정 중 일부를 조정해야했지만,이 작업에 관심이있는 경우 인공물이있는 소스 용기를 표준 연습으로 배치하는 것이 좋습니다. 우리는 그것을 슈퍼 폼에서 구성합니다.

업데이트 2: 나는 만났다 이 소나 타입 백서 Maven 저장소 관리자에 대한 다른 사용 목표를 가진 다양한 채택/성숙 단계에 대해 자세히 설명합니다.

도움이 되었습니까?

해결책

최소 4 개의 리포지토리가있는 Nexus 서버 하나를 설정하는 것이 좋습니다. 나는 인공물을 추천하지 않을 것입니다. Nexus의 무료 버전은 3 개의 그룹 미만에서 20 미만의 개발자 팀에게는 완벽합니다. 그보다 더 많은 사용자가 있다면, 자신에게 호의를 베풀고 소나 타입 릴리스에 대한 비용을 지불하십시오. LDAP 통합은 그 자체로 비용을 지불합니다.

  1. 내부 릴리스
  2. 내부 스냅 샷
  3. 내부 제 3 자 외부 소스에서 나오는 집에서 사용되는 코드 또는 승인 된 타사 버전의 경우. JDBC 드라이버 인 Javax를 넣으십시오.* 고객과 파트너의 물건과 물건을 여기에 두십시오.
  4. 외부 프록시 M2, Codehaus 등과 같은 모든 일반적인 소스에 대한 일반적인 대리

Nexus가 내부 리포지션을 위해 다음을 수행하도록 구성하십시오

  1. 정기적으로 오래된 스냅 샷을 삭제하십시오
  2. 릴리스시 스냅 샷을 삭제합니다
  3. 인덱스 파일을 빌드하십시오. 이것은 로컬 빌드도 속도를 높입니다

이 네 가지 소스 만 사용하는 공통 settings.xml 파일이 있습니다. 이 너머로 사용자 정의 해야하는 경우 일반적인 부분 설정 파일 및 사용 차이에 대한 프로파일. 클라이언트가 자신의 설정을 굴리도록하지 않으면 하나의 컴퓨터에서 빌드하지만 다른 컴퓨터에서는 코드로 구성됩니다.

고객에게 공통 대리를 제공하십시오. Nexus에서는 공통 Maven 소스 (Apache, Jboss, Codehaus)에 많은 프록시를 추가하고 내부 클라이언트에 단일 프록시가 노출 될 수 있습니다. 따라서 고객의 소스를 추가하고 제거 할 수 있습니다.

내부와 제 3 자 인공물을 혼합하지 마십시오 같은 저장소에서. Nexus를 사용하면 웹 GUI를 통해 내부 저장소에 항아리를 추가 할 수 있습니다. JDBC 드라이버 및 기타 외부 코드를 타사에 추가하는 방법으로 권장합니다. UI는 대부분에 비해 사용하기에 아주 좋습니다. 엔터프라이즈 소프트웨어.

공통 상위 POM을 정의하십시오 내부 스냅 샷 및 릴리스 리포지토리를 통해 배포 관리 꼬리표. 나는 많은 사람들이 이것을하지 말라고 말한다는 것을 알고 있습니다. 또한이 작업에 모든 종류의 문제가 있음을 자유롭게 인정하지만 클라이언트가 단일 내부 리포지토리에 배치 할 수있는 릴리스 및 스냅 샷 만 구축 할 경우 괜찮습니다.

기존의 잘못 관리되는 Maven 저장소가있는 경우, 호출 된 5 번째 저장소를 만듭니다 유산 그리고 전체 저장소를 거기에 두십시오. 1 년이되면 기존 파일을 레거시에서 삭제하기 위해 CRON 작업을 설정하십시오. 그것은 모든 사람이 1 년 동안 벗어나서 Poms를 업데이트 할 수 있도록합니다.

내부 아티팩트에 대한 명명 대회를 쉽게 고수 할 수 있습니다. 나는 그룹을 선호한다 Department.Function.Project 그리고 그것에 대한 인공물 componentName. 내부 리포지토리의 경우 com/org/net과 회사 이름이 관련이 없을 것입니다. 회사가 이름을 변경하면 잘못되었습니다. 판매, 회계 또는 재고 부서의 이름이 바뀔 가능성이 훨씬 낮습니다.

다른 팁

확실히 사용하십시오 연결점. :피

나는 넥서스와 인공물을 모두 사용했습니다. Nexus의 인터페이스는 훨씬 더 강력하고 훨씬 더 구성 가능하며 물론 작성합니다. 소나 타입, 누가 거의 모든 것을 잘 모르고 있습니다.

즉, 인공물은 괜찮고 실행 가능합니다.

사용 인공물.

나는 인공물을 직접 사용하고 있으며 사용자 인터페이스와 배포/유지 보수의 용이성을 좋아합니다. 즉, 나는 Nexus를 사용한 적이 없으며 적절한 기능 비교를 실제로 도울 수는 없습니다.

다음은 제가 인공물에 대해 정말로 좋아하는 몇 가지 사항입니다 (Nexus도 이러한 기능을 가질 수 있습니다).

  1. 멋진 웹 2.0 인터페이스.
  2. 로컬 Maven 저장소를 가져 오기 위해 시작하는 데 도움이됩니다.
  3. 보안 용 기존 LDAP 서버와의 통합 용이성 (자격 증명을 저장하기위한 단일 저장소의 열렬한 팬입니다).

실제로 두 가지 주요 Maven 저장소 구현이 있다는 점을 감안할 때, 당신이 올바른 선택을했는지 확인하고 싶다면 둘 다 시도하고 더 좋아하는 스스로를 결정하는 것이 좋습니다.

아마도 이것은 분명하지만, 재현성을 위해 개발자는 인공물을 덮어 쓰지 않아야하며 새로운 버전이어야합니다.

이것은 업스트림 리포지토리에도 적용됩니다. Apache-Commons 버전 1.2.3을 다운로드하면 다시는 다운로드하지 않아야합니다. 수정은 후자의 버전에서 제공되며 기존 버전에 적용되지 않습니다.

고려해야 할 다른 것 :

http://archiva.apache.org/

로서 원래 질문 (M2 저장소를 구성 할 때 고려해야 할 기술적 인 문제), 관리자 당 리포지토리 및 관리자 사용자를 탐색하기위한 읽기 전용 사용자를 작성하는 것이 좋습니다 (즉 : 관리자가 아닌 모든 사용자를위한 읽기 전용 사용자 하나). 또한 주기적으로 백업 이미지를 생성하는 것이 좋습니다 (아마도 하루에 한 번). 저장소가 크거나 때때로 자신의 아티팩트를 설치하는 경우 매우 중요합니다.

마지막으로, 새로운 원격 저장소를 추가 할 때는 리포지토리의 아티팩트 조회가 더 빨리 완료되도록 포함/제외 필터를 추가해야합니다.

고려해야 할 다른 많은 문제가 있지만 Maven 내부 저장소를 관리하는 동안 내가 직면 한 주요 문제입니다.

기록을 위해, 나는 Nexus와 Artifactory를 모두 사용하고 있습니다. Nexus는 매우 간단하고 작동하지만 (때로는 Ubuntu의 설치 프로세스에 문제가 있지만) 무료 버전은 Artifactory 커뮤니티 (무료) 에디션과 경쟁 할 수 없다고 명시 할 수 있습니다. Artifactory의 Awesome Web 2 UI를 제외하고 보안 관리, 정기 백업 및 접근성 문제와 같은 주요 기능은 Nexus의 기능을 초과합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top