Mavenを別のディレクトリから実行する方法(cdからプロジェクトディレクトリへの移動なし)


247

Mavenプロジェクトがに/some/location/projectあり、現在の場所が/another/location/プロジェクトの場所に変更せずにMavenビルドを実行するにはどうすればよいcd /some/location/projectですか?


4
@khmarbaise-一部のシェルスクリプトを使用してビルドとデプロイメントを自動化しようとしていますが、常にcdを使用してディレクトリを変更するのは簡単ではありません。
Ali Shakiba

@khmarbaise-あるディレクトリ内またはその近くの複数のファイルまたはフォルダを参照したい場合がありますが、それが参照するpomおよびファイルは別のディレクトリにあります。
jyoungdev

回答:


431

パラメータ-fを使用して、pomファイルへのパスを指定できます。例:mvn -f /path/to/pom.xml

これは/path/to、作業ディレクトリの場合と同様にMavenを実行します。


39
いいえ、-fはその特定のpomでMavenを起動します。定義により、pomがあるディレクトリがMavenの作業ディレクトリです。私はこれをCIサーバーで使用して、サブディレクトリに特定のモジュールを構築し、それが機能することを保証できます。
dunni '06 / 06/25

15
相対パスにはドットを使用します。例./path/pom.xml
Snekse 2013

3
dunniが言うように、これは機能しません。現在のディレクトリはあなたがいる場所です。Uは別のディレクトリでpomを使用しています。Mavenはこれをサポートしていません。
ミスト

1
java.lang.IllegalArgumentException:パラメータ「ディレクトリ」はディレクトリではありません
Damir Olejar

ほとんどのプロジェクトで機能します。残念ながら、execプラグインを使用する一部のプロジェクトは、作業ディレクトリが設定されていてもプラグインが実行可能ファイルを見つけられないため、この方法でビルドできません。
user2043553

15

Mavenはこれをサポートしていないと思います。Unixを使用していて、現在のディレクトリを離れたくない場合は、小さなシェルスクリプト、シェル関数、または単にサブシェルを使用できます。

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は、相対パスを使用して子pomを参照するマルチモジュールプロジェクトでは機能しません。ありがとう、それが私が探していたものです。
redochka

1
これはMacで動作します(Linuxでも動作することはわかっています)。Windows(または任意のプラットフォーム)では、現在のパスを保存し、プロジェクトにcdして、そこでmvnを実行し、スクリプトでcdすることができます。唯一の問題は、スクリプトが途中で停止した場合です。
Erk


0

あなたはこれを試すことができます:

pushd ../
maven install [...]
popd
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.