2012-04-05 5 views
3

次のように私は、ファイルシステム上の隣のディレクトリに、二つのプロジェクトを持っている:Mavenでは、どのように再帰的に-SNAPSHOT依存関係を構築することができますか?

  • project_a(-snapshot)
  • project_b(-snapshot、project_aに依存)

私がしたいのですがproject_bをビルドし、Mavenがファイルシステム上にproject_aが存在することを発見して、ローカルリポジトリ内でそのアーティファクトを調べるのではなくビルドします。私はこの2プロジェクトの例は、私の本当のビルドを簡略化したものである

  • しかし、これには問題がある

    project_bすなわち
    mvn --projects project_b [goal] 
    

    をアグリゲータ内でこれらを構築し、選択するために反応器を使用することができ

    これは数十のプロジェクトで構成されています。そのすべてをリストアップするアグリゲータープロジェクトを維持する必要はありません。

  • 私は、私はMavenのは-snapshot依存関係のプロジェクトを見つけるために、ファイルシステム上に見えるし、それらを構築する再帰的なビルドを実行するために得ることができるきちんとした方法があります再帰的に-snapshotの依存関係

を構築したいですか?

+0

これらのプロジェクトは、リリースの意味で一緒に属しているのか、それとも本当に別個のものなのでしょうか?マルチモジュールビルドについて考えましたか? – khmarbaise

+0

khmarbaise、プロジェクトには相互依存関係がありますが、モノリシックビルドを避けるために、ほとんどの場合、プロジェクトを別々にビルドしたいと考えています。私はマルチモジュールビルドを考えました。私が見ることができる限り、ここでは適切ではない –

答えて

1

Maven Reactor pluginと遊ぶことができます。 try mvn reactor:make -Dmake.folders=foo,bar

+0

答えが更新されました。 –

+0

ありがとうEugene。 mvn reactor:makeを使用しようとすると、プラグインが内部エラー(誤ったコマンドラインオプションを指定してMavenを起動しようとしている)のために失敗します。 '[INFO] --- maven-reactor-plugin:1.0 C:\ apache-maven-3.0.3 \ bin \ mvn.bat -B -N -r -D:make(default-cli)@ tgv --- [情報]実行中:cmd.exe/X/C maven.reactor.includes = tgv-client \ pom.xml install " コマンドラインオプションを解析できません:認識できないオプション:-r' –

+0

Hmm。 Maven 3では動作しないかもしれません。 –

1

私はこれを必要としていましたが、nodejsに単純な再帰的ラッパーcliを作成しました。 https://github.com/kenglxn/mvnr/blob/master/README.md

それからちょうどmvnrに任意のMavenのコマンドを渡し、それはCWD下のすべてのMVNのプロジェクトでそのコマンドを実行します

sudo npm install -g mvnr 

でNPMからインストールしてください。

関連する問題