[maven-2] 로컬 리포지토리에 대한“mvn deploy”와“mvn install”의 차이점은 무엇입니까?

우리 팀은 Apache를 사용하는 개발 서버에서 공유되는 내부 팀 maven 저장소를 사용합니다. 또한 동일한 시스템에서 Continuum CI 서버를 실행합니다. Continuum의 Maven 빌드는 최종 아티팩트를 공유 디렉토리에 직접 복사하는 “설치”목표로 실행됩니다.

문제는 mvn install배포 목표 (mvn-deploy 플러그인)를 사용 하고 사용하는 공유 저장소에 파일을 추가하는 것의 차이점은 무엇 입니까?

사용 mvn deploy하면 추가 구성 문제가 발생 하는 것처럼 보이지만 공유 저장소에 파일을 설치하는 것은 maven의 내부 작업과 관련된 어떤 이유로 든 나쁜 생각이라는 것을 읽었습니다.

업데이트 : 나는 사이의 기능적 차이 얻을 deployinstall; 실제로 maven repo에서 생성되는 파일과 관련하여 낮은 수준의 세부 정보에 더 관심이 있습니다.



답변

켄, 좋은 질문입니다. 나는 The Definitive Guide 에서 좀 더 명시 적이어야합니다.차이점에 대해 . “설치”와 “배포”는 빌드에서 두 가지 용도로 사용됩니다. “설치”는 로컬 저장소에 아티팩트를 설치하는 프로세스를 나타냅니다. “배포”는 아티팩트를 원격 저장소에 배포하는 프로세스를 나타냅니다.

예:

  1. 내 컴퓨터에서 대규모 다중 모듈 프로젝트를 실행할 때 일반적으로 “mvn install”을 실행합니다. 이것은 생성 된 모든 바이너리 소프트웨어 아티팩트 (일반적으로 JAR)를 내 로컬 저장소에 설치합니다. 그런 다음 빌드에서 개별 모듈을 빌드 할 때 Maven은 로컬 저장소에서 종속성을 검색합니다.

  2. 스냅 샷이나 릴리스를 배포 할 때가되면 “mvn deploy”를 실행하겠습니다. 이것을 실행하면 원격 저장소 또는 서버에 파일 배포를 시도합니다. 일반적으로 Nexus 와 같은 저장소 관리자에 배포합니다.

“배포”를 실행하려면 몇 가지 추가 구성이 필요하므로 POM에 배포 관리 섹션을 제공해야합니다.


답변

Maven 문서 에서 패키지를 설치 하는 저장소 의 차이점 인 것처럼 들립니다 .

  • 설치-다른 프로젝트에서 로컬로 종속성으로 사용하기 위해 패키지를 로컬 저장소에 설치합니다.
  • 배포-통합 또는 릴리스 환경에서 수행되며 다른 개발자 및 프로젝트와 공유하기 위해 최종 패키지를 원격 저장소에 복사합니다.

CI 서버에 대한 “설치”가 로컬 저장소에 설치하고 사용자로서 공유하는 데 약간의 혼란이있을 수 있습니다.


답변

“matt b”가 맞지만 구체적으로 “install”목표는 빌드 된 대상을 파일 시스템의 로컬 저장소에 복사합니다. 현재 전체 그룹을 대상으로하지 않는 프로젝트의 작은 변경에 유용합니다.

“배포”목표는 작업이 완료 될 때 공유 저장소에 업로드 한 다음 프로젝트에 필요한 다른 사람들과 공유 할 수 있습니다.

귀하의 경우에는 CI의 로컬 리포지토리 공유 리포지토리 이기 때문에 배포 관리를 더 쉽게하기 위해 “설치”가 사용 된 것 같습니다 . CI가 다른 상자에있는 경우 “배포”목표를 사용해야합니다.


답변