2017-08-29 6 views
0

私はmavenにかなり新しく、私が維持する必要のある古いアプリケーションを継承しました。提供されたライブラリのいくつかを持っています(これはコンテナによって提供されます)。私は、pom.xmlを変更せずに、すべての依存関係(提供されたライブラリを含む)で戦争を起こす方法があるかどうか疑問に思っています。 (非常にたくさんあります)libsのスコープをコマンドラインからオーバーライドする方法はありますか?コマンドラインから "提供された" mavenスコープを上書きする方法はありますか?

私が挑戦しているのは、かなり深い依存グラフを持つエンタープライズアプリケーションを扱っており、その場に多くの依存関係が存在することです。私の実験の一環として、私は自己完結型のすべての依存関係を持つ戦争を生成したいと思います。何十ものポンを更新してスコープを変更することは、私がを探しているものではありません。コマンドラインからこれを行う方法はありますか?

+3

戦争を起こす1つのPOMを変更する必要があるようです。このpomでは、現在提供されている依存関係に目的のスコープを指定します。 – Rob

+0

実際にそれは助けになった!すぐにそれを試して、うまく動作します。私は階層全体のpom.xmlをすべて変更する必要があるという誤った認識を持っていました。ヒントのおかげで、Googleに挑戦し、どのように魔法が起こったか理解します。乾杯! – shippi

答えて

1

戦争を起こす1つのPOMを変更するだけです。このpomでは、現在提供されている依存関係に目的のスコープを指定します。

Mavenは依存するモジュールに基づいてwarプロジェクトの推移的な依存関係を計算し、提供されたスコープでそれらの特定の依存関係を持ち込みます。これは、これらの依存関係のデフォルト構成を定義するものと考えることができます。 warモジュールの依存関係を明示的に指定して、デフォルト(継承)スコープをオーバーライドすることができます。

私の意見では、戦争以外のモジュールは、おそらくスコープを提供するように設定すべきではなく、実行可能なアーティファクト(warモジュールなど)を実際に作成するモジュールにこの決定を残すべきです。たとえば、スタンドアロンのアプリケーションとしてコードを実行するには、大量のjarファイルを作成する必要があります(これらの依存関係を提供するコンテナ内のwarと比べて)。

関連する問題