2015-09-21 22 views
20

今私は私たちのシステムのための共通のメールサービスを開発したいと思います。 私たちが設計するように、我々はRabbitMQプロデューサーと消費者を開発したいと思っています。消費者側では、Spring BootまたはSpring Cloudアプリケーションを開発してデプロイできますが、プロデューサ側では、以下のような共通のメールクライアントを提供し、他のシステムにjar依存関係を設定したいと考えています。一般的なライブラリを作成するスプリングブートの使用方法

interface MailClient { 
    ListentableFuture send(Message message); 
} 

しかし、私は多くの宣言型の方法を使用して春ブーツと春の雲を見ると、アプリケーションクラスを使用しますが、私はちょうどクラス参照をしたいと配備を必要としてはならないようです。私はそれを実装する方法を知らない。

答えて

1

documentationによると:

春ブーツスタンドアローンを作成することが容易になり、生産グレード 春基づきアプリケーションあなたは「ただ実行する」ことができます。

しかし、スプリングブートはすべての状況に一致する銀色の弾丸ではありません。ライブラリを作成したい場合は、jarをビルドして会社のリポジトリに保存する通常のspringプロジェクトを作成することができます(もしあれば)。

+3

以下のサンゼイの答えが正解です。 Spring IOのドキュメントは、この問題を正確に扱い、Springブートアプリケーション用のライブラリを実装する正しい方法を示しています:https://spring.io/guides/gs/multi-module/。マニュアルに記載されているように:** Spring Boot Mavenプラグインは使用されていませんが、Spring Boot依存関係管理** –

32

Spring Lemonがこれに適しています。これはSpringBootを使用し、他のSpringBootアプリケーションに含まれることを意図しています。これは、我々はそれを作成するためにやったことです:春ブーツスターターウィザードSTSを使って春のブートアプリケーションを、作成した

  1. 生成されたアプリケーションとテストクラスを削除しました。
  2. spring-boot-maven-plugin、すなわちビルドpluginRepositoriesのpom.xmlにセクションを削除しました。 (pom.xmlがこれらのセクションなしでどのように見えるか参照してください)。
+8

を利用したいと思うのは正解です。 –

+1

@sanjayそして、Spring Lemonを依存関係として使用する場所では、この注釈を@SpringBootApplication(scanBasePackages = {"com.naturalprogrammer.spring"}) 'アプリケーションを起動するメインクラスに追加しますか?言い換えれば、Spring LemonのすべてのクラスをSpringで処理するにはどうすればいいのですか。 –

+0

正しいです、https://github.com/naturalprogrammer/lemon-demo私は '@SpringBootApplication(scanBasePackageClasses = {LemonDemoApplication.class、LemonConfig.class})'を使用しました。 (自動構成も試みることができる、と私は思うが、上記はうまくいく) – Sanjay

7

は春のドキュメントは、まさにこの問題に対処し、正しい春ブーツ用/との共通ライブラリを実装する方法を示しています。春ブーツMavenプラグインが、:ドキュメントの状態として

https://spring.io/guides/gs/multi-module/

をが使用されていない場合は、Spring Boot依存関係管理を利用したいと考えています。

0

私はこれまでのところ、私は次のように構成された他のプロジェクトで使用可能なライブラリを構築するために管理し、あなたと同様の必要性を持っていた:

`

<modelVersion>4.0.0</modelVersion> 
<groupId>mx.grailscoder</groupId> 
<artifactId>library</artifactId> 
<version>1.0-SNAPSHOT</version> 
<name>My Custom Library built on Spring Boot</name> 
<description>Spring Boot Project library</description> 
<packaging>jar</packaging> 

<parent> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-parent</artifactId> 
    <version>1.5.4.RELEASE</version> 
</parent> 

<dependencies> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-test</artifactId> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-test</artifactId> 
     <version>${spring.version}</version> 
     <scope>test</scope> 
    </dependency> 
</dependencies> 
<properties> 
    <java.version>1.8</java.version> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> 
    <logentries-appender>RELEASE</logentries-appender> 
</properties> 

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-maven-plugin</artifactId> 
      <executions> 
       <execution> 
        <goals> 
         <goal>repackage</goal> 
        </goals> 
        <configuration> 
         <skip>true</skip> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 
    </plugins> 
</build> 

`

をそれは私を言及することが重要です私のライブラリにメインクラスがないのでrepackageタスクをスキップした後、mvn installタスクを発行しても失敗しません。

関連する問題