2017-05-02 9 views
0

私はSpring Bootのパッケージを「太い」ジャーに理解しようとしています。私が知っていることから、 "fat" jarは独自の特別クラスを持っていて、jarが実行されているときにメインクラスをロードし、それに応じてクラスパスも設定します。このjarパッケージはSpringブートに有効ではないのはなぜですか?

私が理解できないのは、Eclipseを使用してjarのフォルダ構造にすべての依存関係を抽出すると、jarファイルが正しいSpringブートアプリケーションとして実行されなくなる理由です。私はシンプルな春のブートアプリを取るとEclipseからfollowing-を選択し、ここでやっていること繰り返すように

エクスポート - > Runnableをジャー - >を選択し、メインクラス - >エキス必要なライブラリのjarに。

jarと同じようにコマンドラインからjarを実行するだけです。春ブーツが最初に起動するが、次のmessage-で失敗します。

2017年5月2日22:06:40.484は3468をWARN --- [メイン] ationConfigEmbeddedWebA pplicationContext:例外は、コンテキストの初期化中に に遭遇 - 玲をキャンセルリフレッシュの試み: org.springframework.beans.factory.BeanDefinitionStoreExcep: 設定クラスのインポート候補を処理できませんでした [com.main.Test Main];ネストされた例外は です。java.lang.IllegalArgumentException:META-INF/spring.factoriesに自動構成クラス が見つかりません。カスタムパッケージ gingを使用している場合は、ファイルが正しいことを確認してください。

spring.factoriesファイルを編集してクラスを追加することはできますか?

SpringがMavenプラグインを使って実際にファイルをパッケージ化する仕組みを理解しようとしています。

答えて

2

私はそれがSpring Bootアプリケーションなので、プラグインを使ってビルドする必要があると思います。なぜなら、Spring Bootには独自のjarローディング機構があるからです(Spring Boot 1.4のBOOT-INFの紹介)。ドキュメントから

<plugin> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-maven-plugin</artifactId> 
</plugin> 

ザ・春ブーツのMavenプラグインを使用すると、実行可能なjarファイルや戦争のアーカイブをパッケージ化し、「インプレース」アプリケーションを実行できるように、Mavenの中に春のブートサポートを提供します。

リンクについてspring.factories(Appendix E) 何かをdocumetantionと自動構成の候補を見つけるために - Auto-configuration

+0

私は何とかそれを複製することはできますか? spring.factoriesファイルにクラスを追加して、何らかの形でそれを実行できますか?スプリングブートクラスの読み込み機構はどこかに書かれていますか? –

+0

私はSpringブートのドキュメントへのリンクを追加しました –

関連する問題