Mvn 설치 또는 Mvn 패키지


134

Maven을 처음 사용하고 MyEclipse에 maven을 구성한 Java 기반 웹 프로젝트가 있습니다.
내가 어떤 자바 파일을 수정 한 경우 이제 그럼 내가 어떻게해야합니까 Run as -> Mvn installMvn package?

답변:


158

에서 http://maven.apache.org/guides/getting-started/maven-in-five-minutes.html

package: 컴파일 된 코드를 가져 와서 JAR과 같은 배포 가능한 형식으로 패키지하십시오.

install: 패키지를 로컬 저장소에 설치하여 로컬의 다른 프로젝트에서 종속성으로 사용

따라서 귀하의 질문에 대한 답변은 로컬 리포지토리에 설치 하려는지 여부에 달려 있습니다. 목표 단계 스택에서 패키지가 높아지기 때문에 설치도 패키지를 실행합니다.


기본 폴더 코드 및 테스트 폴더 코드를 Jar로 변환하는 프로젝트가 있습니다. 그런 다음 다른 프로젝트에서 사용할 수 있도록 nexus에 배포하려고합니다. 내 배포 명령은 "mvn clean deploy -DskipTests"입니다. 로컬 repo에 설치하는 대신이 명령 패키지를 만들 수 있습니까?
MasterJoe

MasterJoe2 @ "그럼, 내가 넥서스에이를 배포 할" 무슨의 deploy수행을. 로 교체하면 packageNexus에 배포되지 않습니다.
walen

37

mvn install가장 자주 사용되는 옵션입니다.
mvn packagemaven 빌드 프로세스에서 일부 문제를 디버깅하는 경우에만 거의 사용되지 않습니다.

참조 : http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html

참고 mvn package만 jar 파일을 생성합니다.
mvn install그렇게 할 것입니다 다른 코드는 그 항아리에 의존하는 경우 적절한 위치에 파일을 (등 수업) 항아리를 설치합니다.

나는 보통을 mvn clean install; 그러면 target디렉토리가 삭제 되고 해당 위치의 모든 jar이 다시 작성됩니다.
청결은 때때로 방해가 될 수있는 불필요한 물건을 제거하는 데 도움이됩니다.
오히려 디버그 (때때로) 항상 새로 시작하십시오.


27
패키지가 2 포인트에서 거의 사용되지 않는다는 것에 동의하지 않습니다. 1) 설치를 실행할 때마다 실행됩니다. 2) .war을 만드는 경우 로컬 리포지토리에서 전쟁을 할 필요가 없으므로 패키지를 실행하는 것이 좋습니다.
Joshua Wilson

5
대답은 설명하지 않습니다. 왜 로컬 저장소에 설치하기를 원하십니까? 내 이해에 따르면, 프로젝트가 올바르게 설정되면 원자로가 모듈 간의 종속성을 제공합니다. 프로젝트가 올바르게 설정되지 않은 경우 설치하면이 사실을 숨기고 잘못된 아티팩트를 사용할 수 있습니다. 종속 프로젝트가있는 경우 어떤 이유로 든 별도로 빌드해야하는 경우에만 설치하려고합니다.
Vsevolod Golovanov

11

로부터 라이프 사이클 참조 , 설치 프로젝트의 통합 테스트를 실행, 패키지는 하지 않습니다.

생성 된 아티팩트를 실제로 설치할 필요가 없으면 적어도 verify를 사용하십시오 .


5

또한 프로젝트가 서로 의존하는 여러 모듈로 구성된 경우 "패키지"대신 "설치"를 사용해야합니다. 그렇지 않으면 빌드가 실패하고 설치 명령을 사용할 때 원인이되며 모듈 A가 패키지됩니다. 로컬 리포지토리에 배포 한 다음 모듈 B가 모듈 A를 종속성으로 필요로하는 경우 로컬 리포지토리에서 액세스 할 수 있습니다.


4

당신이 있다면 하지 사용하여 원격 (artifactory 같은) 저장소를, 평범한 구식를 사용합니다 : mvn clean install

꽤 오래된 주제이지만 AFAIK, 팀과 항아리를 공유하기 위해 자체 저장소 (예 : 인공물 포함)를 실행하는 경우 사용할 수 있습니다

mvn clean deploy

대신에.

이런 방식으로 지속적인 통합 서버는 모든 종속성이 원격 저장소로 올바르게 푸시되도록 할 수 있습니다. 하나를 놓치면 mvn은 CI 로컬 m2 저장소에서 찾을 수 없습니다.


1
나는 당신이 mvn clean 패키지가 아니라 mvn clean deploy에 대해 이야기하고 있다고 생각합니다.
Mayjak

2

package-컴파일 된 코드를 가져 와서 JAR 또는 WAR 파일과 같은 배포 가능한 형식으로 패키지합니다. install-로컬 저장소에 패키지를 설치하여 로컬의 다른 프로젝트에서 종속성으로 사용


2

적절한 방법은 mvn package당신이 당신의 빌드의 핵심 부분이 제대로 일을했다면 다음 로컬 저장소에서 패키지를 설치할 필요가 없습니다.

또한 Travis를 사용하는 $HOME.m2/repository경우 자신의 프로젝트에 패키지를 사용하는 경우 에는 의존하지 않기 때문에 종속성을 "캐시"할 수 있습니다 .

실용적으로 당신이 시도하려고 mvn site하면 일반적으로 mvn install전에해야합니다. 둘 중 하나에 버그가 너무 많 site거나 유지 관리가 잘되지 않는 수많은 플러그인입니다.


0

Java 파일을 변경 한 후 달성하려는 것에 달려 있습니다. maven 프로세스를 테스트하기 전에는 아무것도 할 필요가 없습니다. Eclipse / MyEclipse는 필요한 것을 빌드하고 프로젝트 내의 적절한 위치에 출력을 넣습니다. maven으로 명시 적으로 아무것도 할 필요없이 웹 프로젝트 인 경우이를 실행하거나 배포 할 수도 있습니다. 결국 maven 저장소에 프로젝트를 설치하려면 maven 설치를 수행해야합니다. MyEclipse가 자동으로 수행하지 않는 다른 maven 목표를 실행할 수도 있습니다.

내가 말했듯이, 그것은 당신이하고 싶은 것에 달려 있습니다.

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