1

一言で言えば、私がやろうとしているのは、多数のライブラリとアプリケーション、すべての Maven プロジェクトを一度に構築することです。これを1回のコマンドラインで実行するだけでこれを達成する方法はmvn package、ビルドしたい各モジュールをリストするマルチモジュールプロジェクトを作成し、それらをMavenリアクターに投入してビルドすることです。

Maven book の例に従うと、通常、マルチpomモジュールは個々のモジュールの上のディレクトリにあるようです。ただし、親pomがモジュールの上のディレクトリにあるのも通常の場合であり、疑問が生じます。通常、マルチモジュールビルドも親になる必要がありますか? 私はそうは思いません。しかし、なぜ私はこの面白いデザインの癖に出くわすのだろうか.

だから、私はこれを設定する正しい方法を考えています。次の規則 / 要件があります。

  • マルチpomモジュールは、他のモジュールがディスク上のどこにあるのかを認識している必要があります。実際にはソースからビルドを行っているため、既にインストールされているバージョンに単純に依存することはできません (それらをインストールしているため!)
  • 親は実際には物理ディレクトリである必要はありませんが、それが望ましいでしょう。私はこれを破るのが最善の慣習だと考えています。
  • 実際、個々のライブラリ/アプリケーションは、マルチモジュール ビルドの一部としてビルドされていることを知る必要さえありません。

これは通常、マルチモジュール ビルドでどのように設定されますか? 複数の Maven プロジェクトのビルドを一度に管理する簡単な方法はありますか?

4

2 に答える 2

1

個々のモジュールをすべてルート モジュール内に配置しました。 一部のソフトウェアでは、階層の複数のレイヤーに問題があります。

子モジュールが同じレベルの親を参照するようにするには:

<parent>
    <groupId>com.domain</groupId>
    <artifactId>xyz</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <relativePath>../xyz/pom.xml</relativePath>
</parent>

個々のモジュールが継承する必要があるマルチモジュール (プロパティなど) には何も入れないことをお勧めします。そうすると、他のモジュールを個別にビルドできなくなります。

于 2012-12-31T17:20:52.013 に答える
0

これは「慣習」のあいまいな部分であると私は言います。ドキュメントと常識はどちらも、プロジェクトの集約(別名マルチモジュールビルド)と継承が、異なるユースケースを処理するために提供される2つの異なるメカニズムであることを示唆しています。

同時に、プロジェクトの集約と継承の親の役割の両方を1つのpomに結合するという事実上の慣習があるようです(ええ、私は知っています)。実際、親宣言の要素とプロジェクト集約メカニズムのモジュール要素の両方が、この組み合わせに使用を誘導しているように見えます。

個人的には、親のpomを定期的に分離することが非常に便利だと思います。また、ソース管理の完全に分離された場所に親pomを配置すること、つまりフォルダー構造を見つけることも便利です。ただし、ソース管理/フォルダー構造で同じマルチモジュールビルド構造の一部であるビルドを見つけることが役立つことはめったにありません。おそらくこれは、同じ集約ビルドに何かを含める必要があるかどうかの良い尺度ですらあります。ソースフォルダ構造でのコロケーションに値すると思われる場合は、おそらく集約の有力な候補です。

私が確信している唯一の薄いことは、これらのものが時間の頭を整理する価値があるということです。そして、モノリシックビルド構造を作成しないという側面でエラーを起こす方がおそらく良いでしょう。。。本当に必要ではない、集約された親子ビルドモジュールの巨大な塊を処理することは非常に困難です。一方、個々のビルドを集約して一緒に実行することは、CIビルドサーバーなどのより高いレベルで提供される機能です。ですから、私はもっと独立する側で誤りを犯すことを提案するかもしれないと思います。

于 2012-12-31T21:36:24.410 に答える