2017-03-31 6 views
0

1)EclipseでMavenを使用しているpom.xmlプロジェクトにSpring Context依存関係を追加しました。Mavenの最終的にビルドされインストールされた.JARに依存性バイナリはどのように含まれていますか?

2)私は、プロジェクトの「インストール」フェーズを実行し、それが適切に構築された、と私は私の.JARを解凍したとき

3)、私は私の単一のを見たのプロジェクトは、私の地元の.m2リポジトリにインストールされました私がカスタムを作成したクラス。

これは、2つの質問現れます:

1)は、外部にあることから、クラスが物理的にあなたのクラス内でインスタンス化されている場合、依存クラスは、あなたの最終建てのjarファイルに含まれて?どうして

2)私は私のクラスにSpringContextAnnotationConfigクラスをインポートし、そのインスタンスをインスタンス化し、私のプロジェクトをインストールしたとき、私は私の.JARを解凍したとき、私はまだ私だ​​けのカスタムクラスを見ました。これは珍しいことですか?またはSpringContextAnnotationConfigが.classバイナリに書き込まれているので、自分の.jarを別のJVMにデプロイするときに、カスタムビルド.classバイナリ内のすべての依存関係を嫌うのですか?

おかげ

SOLUTION

問題は、私はそれはWARの場合と同じようにJAR出力のために同じことを行うためにMavenを期待していたということでした。 webappアーキタイプを使用してWARファイルを生成するとき、Mavenは必要な依存関係ジャーを自動的にWEB-INFディレクトリにパッケージ化しました。

私は基本的に、リモートの新しいサーバー上のコンテナが依存関係バイナリを持たずにクラスを実行する方法を理解しようとしていました。私はJARファイルを生成するために構築されたmavenを実行しようとしていましたが、これは私の依存関係を含めて終了しませんでした。しかし、WARファイルをビルドするためにmaven installを実行したとき、私の依存関係はすべて展開の準備が整いました。

+0

1)yesと2)実際に実行可能なjarファイルまたはwarファイルを実際に作成しない限り、ライブラリは含まれません。依存関係を登録するだけですが、それらはパッケージ化された.warまたは.jarにのみ含まれます – rptmat57

+0

jarはコードベース用にのみ作成されます。外部依存関係はjar自体であるため、再度作成する必要はありません。すべてをzipで束ねることができます。実行中にすべての依存関係をクラスパスに追加する – jos

答えて

2
  1. いいえ、それらは決して(それを行う特別なプラグインを使用しない限り)含まれません。いくつかの他のプロジェクト、その依存関係(とその依存関係、など)への依存関係を自動的に(これは制御可能であるので、あなたができる追加されるように、あなたはこの案件を追加した場合

  2. は1

を参照してください。それらを除外するか、バージョンを変更するなど)。しかし、それらはpom.xmlから取られ、.jarからではありません。これにより、同じライブラリを膨大な回数ダウンロードすることもなくなります。

ビルドファットジャーについては、 How can I create an executable JAR with dependencies using Maven?。特にSpringの場合、Spring Bootが望ましいでしょう。

関連する問題