2016-11-16 15 views
1

ビルドjarファイルの構造を変更した後、既存のSpring-Bootアプリケーションから新しいアプリケーションにクラスをインポートする際に問題があります。Springブート1.4アプリケーションからmaven依存関係をインポート

アプリケーションのクラスがBOOT-INF/classesにあり、jarファイルのルートにはないようにjarファイルを変更しました。

しかし、私はこのSpring-bootアプリケーションに通常の依存関係があるとき、このアプリケーションと新しいアプリケーションの新しいクラスに既存のクラスをインポートできません。彼らは構造を変更する前に

は、それがうまく働いたあなたは、両方のアプリケーションでの依存しているクラスが別のプロジェクトで使用できるように...ここ

+2

あなたが最初の場所で別のスプリング・ブートジャーに、ばねブートjarを含むべきではありませんMavenのためのこのような。 –

+0

アプリケーション間でコードが共有されている場合は、別のライブラリプロジェクトに配置する必要があります。 – OrangeDog

答えて

3

ソリューションは、あなたのコードをリファクタリングすることです。

今、あなたは、両方のプロジェクトで依存関係をインポートすることで、これらのクラスを使用することができます。

<dependency> 
    <groupId>org.example</groupId> 
    <artifactId>example-shared</artifactId> 
</dependency> 

あなたはこの新しく作られた共有プロジェクトで春のブートMavenプラグインを使用していない、あなたはおそらくないことを確認してくださいあなたが必要としないかもしれないたくさんの依存関係をロードするので、いずれかのスプリングブートスターターを使用してください。

+0

はい、私はおそらく正しい方法だと思います。 Spring-BootアプリケーションとしてREST-APIを作成し、アプリケーション内のPOSTメソッドへの入力としてオブジェクトを定義しました。したがって、呼び出し側のアプリケーションでも定義されたオブジェクトを使用するためにAPIにmaven依存関係を持たせるのは簡単でした。そして、Springブートがjarファイルのレイアウトをバージョンから変更するまでこれはうまくいきました1.4。だから私はバージョン1.4以降でも同じように動作する可能性があるのか​​どうか疑問に思った。 – runesr

0

実際には、依存関係としてSpringブートアプリケーションを使用することが可能であることがわかりました。ほとんどの場合、推奨されていません。しかし、場合によってはそれだけで簡単になります。 この解決策は、実行可能なアーカイブを使用できないことを意味します。

"実行可能なアーカイブをBOOT-INF/classesの実行可能なjar形式のパッケージアプリケーションクラスとして依存関係として使用することはできません。つまり、実行可能なjarが依存関係として使用されているときには見つかりません。

私の質問への解決策は、spring-boot-maven-pluginに構成分類子を含めることです。 Gradleのため

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

またはこのような:

bootRepackage { 
classifier = 'exec' 
} 
関連する問題