developer tip

Maven의 로컬 저장소 위치를 CLI 매개 변수로 지정

optionbox 2020. 7. 30. 10:21
반응형

Maven의 로컬 저장소 위치를 CLI 매개 변수로 지정


Maven 명령 행에서 로컬 Maven 저장소의 위치를 ​​인수로 설정할 수 있습니까?

문제는에서 기본값을 사용하지 않는다는 것입니다 ~/.m2/repository. 그러나 나는 자체 설정으로 빌드중인 일부 프로젝트를 확인했습니다 -s settings.xml. 그 settings.xml은 로컬 저장소를 지정하지 않으므로 Maven은 ~/.m2/repository다시 사용 합니다 ... <localRepository>프로젝트의 settings.xml에 요소 를 추가하지 않고 기본이 아닌 로컬 저장소 위치를 사용하고 싶습니다.

난 노력 했어

  • -DlocalRepository="..."
  • $mvn invoker:run -s settings.xml clean install -DskipTests -DlocalRepositoryPath=
  • -Dsettings.localRepository

그러나 이러한 옵션 중 어느 것도 작동하지 않습니다.

따라서 타사 settings.xml을 수정할 것인지 로컬 리포지토리로 옮길 것인지 결정해야한다고 생각합니다. ~


maven 속성 사용 maven.repo.local:

mvn -Dmaven.repo.local=$HOME/.my/other/repository clean install

settings.xml을 수정할 필요가 없습니다.


자식의 경우 :

alias mvn='mvn -Dmaven.repo.local=`git rev-parse --show-toplevel`/.m2/repository'

이것은 각 자식 저장소에서 별도의 메이븐 저장소를 사용합니다.


작동하는 해키 방법 중 하나는 다음과 같습니다.

  1. <localRepository>${m2.localRepository}</localRepository>settings.xml에 추가
  2. mvn.sh 또는 mvn.bat에서 실행되는 명령에서 "$ @" -Dm2.localRepository=<full path to home dir>/.m2/repository 앞에 추가하십시오 . 이렇게하면 기본 로컬 리포지토리가 있어야합니다.
  3. 이제 사용할 수 있습니다 mvn -Dm2.localRepository=... <phases/goals>. 명령 행 시스템 특성이 mvn 스크립트의 명령 행 다음에 명령 행에 추가되므로 우선권을 갖습니다. (적어도 나는 그것이 Windows와 Linux 모두에서 그런 식으로 작동한다고 확신하지만 테스트는 말할 것입니다.)

참고 URL : https://stackoverflow.com/questions/6823462/specifying-mavens-local-repository-location-as-a-cli-parameter

반응형