2009-10-09 3 views
22

참고 :이 질문은 원래 Lahiru Gunathilake으로 answer으로 또 다른 question으로 게시되었습니다. 나는 여기를 명료하게하기 위해 분리 된 질문으로 옮기고있다.mvn deploy를 실행하면 새로운 아티팩트가 생성되거나 이미 존재하는 아티팩트가 원격 서버에 배포됩니다.

릴리스를 수행 할 때 로컬 시스템에서 빌드하고 품질 보증을 수행 한 다음 저장소에 호스트합니다. mvn deploy을 실행하면 새로운 아티팩트가 생성되므로 로컬 저장소에서 바이너리 배포판을 생성하기 때문에 저장소 및 바이너리 배포시 다른 아티팩트가 발생합니다. 그러나 누군가가 소스 코드를 얻고 빌드를하면 다른 것을 얻을 수 있습니다. 그러나 mvn deploy을 빌드하지 않고 배포하는 것이 좋습니다.

답변

27

으로는 Build Lifecycle Basics 설명 :

빌드 라이프 사이클이 빌드 단계가를 나타내고 페이즈 이들 각각은 라이프 사이클을 구축

빌드 단계의 다른 목록에 의해 정의, 구성되어 라이프 사이클 단계. 예를 들어

, 기본 라이프 사이클이있는합니다 (Lifecycle Reference을 참조 빌드 단계의 전체 목록) 단계를 구축 다음

  • validate을 - 검증 프로젝트가 올 바르고 필요한 모든 정보를 사용할 수
  • compile - 적절한 단위 테스트 프레임 워크를 사용하여 컴파일 된 소스 코드를 테스트 - 프로젝트
  • test의 소스 코드를 컴파일합니다. 이 테스트에서는 코드를 패키징하거나 배포 할 필요가 없습니다.
  • package - 컴파일 된 코드를 JAR과 같은 배포 가능한 형식으로 패키지화합니다.
  • integration-test - 공정하고 필요한 경우 통합 테스트가
  • verify
  • 을 실행할 수있는 환경에 패키지를 배포 - 로컬로 패키지를 설치 - 패키지가 유효하고 품질 기준을
  • install을 충족 확인하기 위해 어떤 검사를 실행 저장소에서 다른 프로젝트의 종속성으로 사용하기 위해 로컬로
  • deploy - 통합 또는 릴리스 환경에서 완료되면 최종 패키지를 다른 개발자 및 프로젝트와 공유하기 위해 원격 리포지토리에 복사합니다.

이러한 빌드 단계 (여기에 나와 있지 않은 다른 빌드 단계)는 순차적으로 실행되어 기본 수명주기를 완료합니다. 위의 빌드 단계를 감안할 때 이것은 기본 수명주기가 사용될 때 Maven이 먼저 프로젝트의 유효성을 검사 한 다음 소스를 컴파일하고, 테스트와 비교하여 실행하고, 바이너리 (예 : jar)를 패키징하고, 패키지를 확인하고, 패키지를 로컬 리포지토리에 설치 한 다음 지정된 환경에 설치된 패키지를 배포합니다.

경우에만 배포,이 경우, 마지막 빌드 단계가 실행되도록 호출 할 필요가, 모든 작업을 수행하려면 :

당신이 빌드 단계를 호출하는 경우, 그것은뿐만 아니라 실행하기 때문이다
mvn deploy 

이는 빌드 단계뿐 아니라 호출 된 빌드 단계 이전의 모든 빌드 단계에도 적용됩니다.

그래서, 대답은 mvn deployinstall를 실행하고 프로젝트 아티팩트를 구축 할 것입니다, '예'입니다. 하지만 아무 것도 변경하지 않으면 정확히 동일한 아티팩트가 생성됩니다.

관련 문제