0

プラグイン (maven プラグインではない) を追加できるcoreと呼ぶ webappがありますが、スタンドアロンの webapp として正常に実行およびビルドする必要があります。コアが依存し、コア用に開発されたすべてのプラグインも依存する plugin-lib があります。

このような:

core    -> core-plugin-lib
plugins -> core-plugin-lib

私のディレクトリ構造は単純です:

root/
    core/
        pom.xml
    core-plugin-lib/
        pom.xml
    pluginA/
        pom.xml
    pluginB/
        pom.xml

私の最初の問題は、コアまたは任意のプラグインをビルドし、依存ライブラリもビルドできますか? modulesについて読みましたが、ご覧のとおり、libには2つの親があります。私が本当に望んでいるのは、コアをビルドし、lib もビルドすることです。または、プラグインをビルドした場合は、lib も個別にビルドしたいと思います。また、コアはどのプラグインにも依存しないことに注意してください。

2 つ目の問題は、コアをビルドしてプラグインをビルドする方法です。ただし、コアはプラグインに依存しておらず、プラグインはコアのモジュールであってはなりません。彼らはそうすることができました、それは必要条件ではありませんが、できるだけ独立した状態を維持したいので、私はむしろしたくありません.

現在、プラグインをビルドすると、コア内の /plugin ディレクトリにコピーされ、コア pom に配布プロファイルがあり、このディレクトリから webapp の war 内に既存のプラグインをコピーします。したがって、プロファイルなしでコアをビルドすると、プラグインはコピーされませんが、配布プロファイルを実行すると、はい. これは機能しますが、ライブラリを構築し、プラグインを構築し、コアを構築する必要があるため、面倒です。

最初の問題の二重の依存関係を解決できる pom 構造があるかどうか、および 2 番目の問題を処理し、依存していなくてもコアを介してプラグインを構築する方法があるかどうかを知りたいです。そして、可能であれば、別の pom ではなく、プロファイル内で 2 番目の問題を処理できれば. このプロファイルは、maven-assembly-pluginを使用して、すべてがパックされたtar.gzを作成します。また、できれば維持したいです。

4

1 に答える 1

1

モジュールについて読みましたが、ご覧のとおり、libには2つの親があります。

lib にはそれに依存する2 つのプロジェクトがあることを意味していると思います。親とは、Maven 固有のものを意味します。つまり、別のものに継承される POM です。この場合、モジュールが探しているものだと思います。

コアとプラグインを使用してライブラリをビルドできるかどうかについては、可能です。それは良い考えですか?いいえ。プラグイン lib は、プラグインとコアの間の契約を定義します。一般に、依存しているバージョンを正確に知りたいと考えていますが、常に最新であるとは限りません。ライブラリのバージョンを他のプロジェクトから独立させ、必要に応じてビルドすることをお勧めします。次に、ターゲットとするローカル (またはリモート) リポジトリのバージョンにコアとプラグインを依存させます。

それらを一緒にビルドすることに決めた場合は、両方のプロジェクトをモジュールとして含む個別のマルチモジュール POM を、おそらく他のプロジェクトの隣に定義するだけです。

2 番目の質問に関しては、コアとプラグインの両方を一緒にビルドする別の POM を定義できます。同じマルチモジュール手法を使用します。

于 2011-09-15T23:43:10.253 に答える