다른 디렉토리에서 Maven을 실행하는 방법 (프로젝트 디렉토리에 cd없이)?


249

내 maven 프로젝트가 /some/location/project있고 현재 위치가 /another/location/프로젝트 위치로 변경하지 않고 maven 빌드를 어떻게 실행할 수 있다고 가정 cd /some/location/project합니까?


4
@ khmarbaise-일부 쉘 스크립트를 사용하여 빌드 및 배포를 자동화하려고하는데 항상 cd를 사용하여 디렉토리를 변경하는 것은 아닙니다.
알리 Shakiba

@khmarbaise-한 디렉토리 안에 또는 근처에 여러 파일이나 폴더를 참조하고 싶을 수도 있지만 pom과 해당 파일이 다른 디렉토리에 있습니다.
jyoungdev

답변:


432

매개 변수 -f를 사용하고 pom 파일의 경로를 지정할 수 있습니다 ( 예 :mvn -f /path/to/pom.xml

이것은 maven을 "있는 것처럼" /path/to작업 디렉토리 에 대해 실행합니다.


39
아니요, -f는 특정 pom으로 Maven을 시작하며 pom이있는 디렉토리는 Maven의 작업 디렉토리입니다. CI-Server에서이를 사용하여 하위 디렉토리에 특정 모듈을 빌드하고 작동하는지 확인할 수 있습니다.
dunni

15
상대 경로에는 점을 사용하십시오. 예 :./path/pom.xml
Snekse

3
dunni가 말했듯이 이것은 작동하지 않습니다. 현재 디렉토리가 있습니다. U는 다른 디렉토리에서 pom을 사용하고 있습니다. Maven은 이것을 지원하지 않습니다.
미스트

1
java.lang.IllegalArgumentException : 'directory'매개 변수가 디렉토리가 아닙니다.
Damir Olejar

대부분의 프로젝트에서 작동합니다. 불행하게도, exec 플러그인을 사용하는 일부 프로젝트는 작업 디렉토리가 구성되어 있어도 플러그인이 실행 파일을 찾지 못하므로 이런 방식으로 빌드 할 수 없습니다.
user2043553

15

maven이 이것을 지원하지 않는다고 생각합니다. 유닉스에 있고 현재 디렉토리를 떠나고 싶지 않다면 작은 쉘 스크립트, 쉘 기능 또는 하위 쉘을 사용할 수 있습니다.

user@host ~/project$ (cd ~/some/location; mvn install)
[ ... mvn build ... ]
user@host ~/project$

bash 함수 (~ / .bashrc에 추가 할 수 있음) :

function mvn-there() {
  DIR="$1"
  shift
  (cd $DIR; mvn "$@")     
} 

user@host ~/project$ mvn-there ~/some/location install)
[ ... mvn build ... ]
user@host ~/project$

나는 이것이 특정 질문에 대답하지는 않지만 당신이 쫓는 것을 당신에게 제공 할 수 있음을 알고 있습니다. Windows 셸에 익숙하지 않지만 비슷한 솔루션에 도달 할 수 있어야합니다.

문안 인사


4
우수한. mvn -f param은 하위 폼을 참조하기 위해 상대 경로를 사용하는 다중 모듈 프로젝트에서 작동하지 않습니다. 고마워, 내가 찾던거야.
redochka

1
Mac에서 작동하며 Linux에서도 작동한다는 것을 알고 있습니다. Windows (또는 모든 플랫폼)에서 현재 경로를 저장하고 프로젝트로 cd하고 mvn 작업을 수행하고 스크립트로 다시 CD에 넣을 수 있어야합니다. 유일한 문제는 스크립트가 중간에 중단 된 경우입니다.
Erk


0

당신은 이것을 시도 할 수 있습니다 :

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