“mvn clean package”와“mvn clean install”은 어떻게 다릅니 까?


277

정확히의 차이점은 무엇입니까 mvn clean package와는 mvn clean install? 이 두 명령을 모두 실행하면 두 명령이 모두 동일한 것으로 보입니다.



3
하나의 패키지 (대상에서 빌드) 및 설치 (패키지 및 저장소에 배치) 다른 모듈에서이 버전을 사용하려면 나중에 수행해야합니다.
피터로 레이

3
아마도 다시 열어야합니까? 대답하기가 완벽하고 대답하기가 어렵지 않았습니다. 또한 누군가가 maven을 처음 사용하는 경우 두 단계가 어떻게 같은 일을하는지 쉽게 알 수 있습니다. 덜 모호하게 만들기 위해 편집하겠습니다.
Daniel Kaplan

답변:


371

글쎄, 둘 다 청소합니다. 즉, 대상 폴더가 제거됩니다. 실제 질문은 패키지와 설치의 차이점이 무엇입니까?

package코드를 컴파일하고 패키지합니다. 예를 들어, pom에서 프로젝트가 jar라고 표시하면 패키지를 만들어 대상 디렉토리의 어딘가에 배치 할 때 jar가 작성됩니다 (기본).

install컴파일하고 패키지하지만 패키지를 로컬 저장소에 넣습니다. 이렇게하면 다른 프로젝트가이를 참조하여 로컬 리포지토리에서 가져올 수 있습니다.

선적 서류 비치


왜 mvn 패키지가 mvn 패키지보다 빠른가요?
lostintranslation

9
빌드는 증분이므로 @SharadHolani. mvn clean install보다 빠르지 않습니다 mvn package.
OrangeDog

내 프로젝트의 경우 mvn 패키지 어셈블리 : 뚱뚱한 항아리를 만드는 단일 패키지는 mvn 설치보다 시간이 오래 걸립니다. 패키지와 빌드 모두 동등한 지방 항아리를 설치합니까?
lostintranslation '12

1
@RakeshYadav 그렇습니다
Daniel Kaplan

116

클린 기능 (두 명령 모두 공통)-이전 빌드에서 생성 된 모든 파일을 제거합니다.


명령 패키지설치 의 차이점에 따라 먼저 maven 프로젝트수명주기 를 이해해야합니다.


이것은 maven의 기본 수명주기 단계입니다

  • 확인 -프로젝트가 올바른지 확인하고 필요한 모든 정보를 사용할 수 있습니다
  • 컴파일 -프로젝트의 소스 코드를 컴파일
  • 테스트 -적절한 단위 테스트 프레임 워크를 사용하여 컴파일 된 소스 코드를 테스트하십시오. 이러한 테스트는 코드를 패키지하거나 배포 할 필요가 없습니다.
  • 패키지 - 컴파일 된 코드를 가지고 이러한 JAR로, 그 배포 형식으로 패키지.
  • 확인 -통합 테스트 결과에 대한 모든 검사를 실행하여 품질 기준을 충족하는지 확인
  • install- 로컬 저장소에 패키지를 설치하여 로컬의 다른 프로젝트에서 종속성으로 사용
  • 배포 -빌드 환경에서 수행되며 다른 개발자 및 프로젝트와 공유하기 위해 최종 패키지를 원격 저장소에 복사합니다.

Maven의 작동 방식은 수명주기 단계 중 하나에 대해 명령을 실행하면 명령 자체를 실행하기 전에 각 기본 수명주기 단계를 순서대로 실행합니다.

실행 순서

유효성 검사 >> 컴파일 >> 테스트 (선택 사항) >> 패키지 >> 확인 >> 설치 >> 배포

따라서 mvn package 명령을 실행하면 package까지 모든 라이프 사이클 단계에 대한 명령이 실행됩니다.

유효성 검사 >> 컴파일 >> 테스트 (선택 사항) >> 패키지

에 관해서 그리고 MVN 설치 , 모든 라이프 사이클 단계의 명령을 실행 패키지뿐만 아니라 포함하는 설치 경작한다

유효성 검사 >> 컴파일 >> 테스트 (선택 사항) >> 패키지 >> 확인 >> 설치


따라서 실제로 의미하는 것은 install 명령은 package 명령이 수행하는 모든 작업 과 그 밖의 모든 작업을 수행하는 것입니다 (로컬 저장소에 다른 프로젝트의 종속성으로 사용하기 위해 패키지를 로컬 리포지토리에 설치).

출처 : Maven 라이프 사이클 참조


1
허용 된 답변으로 표시해야합니다. 이것은 OP가 Maven 라이프 사이클의 다른 단계와 mvn install에 mvn 패키지가 포함되어 있지만 다른 방법은 아닌 이유를 이해하도록 명확하게 정의하고 도와줍니다.
Jasmeet Singh

1
간단히 말해서 Maven!
CodeSlave

19

패키지 는 POM 파일에 따라 Jar / war을 생성합니다. install 은 다른 종속 항목이있는 경우 생성 된 jar 파일을 로컬 저장소에 설치합니다.

설치 단계는 패키지 단계 후에옵니다


첫 번째 패키징이 발생하면 해당 패키지 (jar / war)가 설치됩니다.
압둘 Gafoor

1
"설치 단계 패키지 단계를 따릅니다 ". 현재 표현 된 방식은 거꾸로입니다. "다음"은 "후"를 의미합니다.
Charles Wood

11

패키지 및 설치는 maven 빌드 수명주기의 다양한 단계입니다. 패키지 단계는 그 이전의 모든 단계를 실행하며 프로젝트를 항아리로 포장하는 것으로 중단됩니다. 마찬가지로 설치 단계는 모든 이전 단계를 실행하고 마지막으로 다른 종속 프로젝트를 위해 프로젝트를 로컬로 설치합니다.

maven 빌드 수명주기를 이해하려면 다음 링크를 방문하십시오 https://ayolajayamaha.blogspot.in/2014/05/difference-between-mvn-clean-install.html


1
"마지막으로 다른 종속 프로젝트를 위해 프로젝트를 로컬에 설치하십시오"
Arun Gowda

2
@ArunGowda는 maven을 설치할 때 시스템에 생성되는 .m2에 패키징중인 프로젝트와 함께 추가되고 다른 프로젝트에서 종속성으로 사용할 수 있음을 의미합니다.
자바

그림은 1000 단어입니다. 누구나 다이어그램을 얻었습니까?

@MrCholo mvn 설치 는 jar / war을 maven 저장소에 넣습니다. 모든 maven 의존성이 저장되는 장소, 보통 ~ / .m2
brt

6

package패키지 추가 할 것이다 jar또는 war당신에 target, 우리는 대상 폴더 (사용 비울 때 폴더, 우리는 그것을 확인하실 수 있습니다 mvn clean) 다음 실행을 mvn package.
install모든 작업을 package수행하며, 패키지 jar또는 war로컬 리포지토리에 추가됩니다 . .m2폴더 를 체크인하여 확인할 수 있습니다 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.