0

私は約30のプロジェクトを持っており、そのうちの6つは特別な(しかし同じ)ビルドプロセスを持っている必要があります。これらのプロジェクトはすべて、ひとり親から継承しています。親で特別なビルドプロセスを定義しました。いくつかのプラグインと多くの構成が含まれています。

継承構造は次のようになります。

- global-parent (this is the place where special profile is defined)
   -a-parent
      -a-ear
      -a-war
      -a-ejb
      -a-special <--
   -b-parent
      -b-ear
      -b-war
      -b-ejb
      -b-special <--
   -c-parent
      -c-ear
      -c-war
      -c-ejb
      -c-special <--
  etc...

したがって、これらの特別なプロジェクトに別のpomを継承させることはできません。

pom.xmlのこれらの特別なプロジェクトで「フラグ」を設定して常にに対して実行する方法はspecial-profile

今のところ、profile / Activation / file / extstsを設定し、特別なプロジェクトごとに特別な空のマーカーファイルを作成しましたが、これは非常に醜いです。また、maven-properties-pluginを使用してシステムプロパティフラグを設定しようとしましたが、それでも醜いです。

もっと合法的な方法があるに違いありません。これは悪いデザインですか?

4

1 に答える 1

1

これを行う標準的な方法は、2つのレベルの親プロジェクトを使用することです。これは、「global-parent」と「webapps-parent」を使用して、webappコンポーネント専用の共通の構成/プロファイルを使用して行いました。ただし、Mavenには存在しない「多重継承」のようなものが必要だと思います。

そうでなければ、私の意見では、「ファイルが存在する」アクティベーションは許容されます。

補遺

特別なモジュールについて正確に「特別な」ものが何であるかを知らなければ、「これは悪い設計ですか?」というやや主観的な質問に答えるのは難しいです。

おそらく、他のすべてのプラグインをカプセル化するカスタムプラグインは「より良い」または「よりMavenっぽい」でしょうが、結局のところ、ビルドは保守可能で実行が簡単ですか(つまりsvn co project; cd project; mvn package)?

もしそうなら、あなたはあなたの目標を達成しました。

于 2012-10-05T17:29:39.293 に答える