2017-11-15 3 views
1

私は春のブートメイクJavaマルチモジュール構造を持っています。私の構造は次のとおりです。Maven Multi Moduleは、ビジネスモジュールでデータソースapplication.propertiesを複製することを主張しています

product (parent pom module) 
..product-data (child pom module) 
..product-business (has dependency for product-data) 
..product-rest (has dependency for product-business) 
..product-entities (child pom module) 

製品データは、製品休止および製品残りはJSONオブジェクトを返すにエンティティオブジェクトを返します製品事業および製品事業にエンティティオブジェクトを返します。

商品データは正常に動作します。しかし、製品ビジネスを実行すると、エラー"データベースタイプNONEの組み込みデータベースドライバクラスを特定できません"が発生します。 Springは、私のproduct-business/src/main/resources/application.propertiesファイルの下にあるspring.datasource ....プロパティを探します。ここにすべてのプロパティを定義すると、エラーが消えて、製品データからデータが取得されます。

ただし、私はすでにproduct-data/src/main/resources/application.propertiesファイルの下でプロパティを定義しています。 なぜ私は製品ビジネスモジュールで同じプロパティを複製する必要がありますか?全体の目的はレイヤーを分離することです。 product-dataはデータを取得する責任があり、独自の構造の下にspring.datasource ...プロパティがあるはずです。なぜ私はビジネスモジュールのプロパティも重複させるのですか?私は何かが不足していると確信しています。誰か手掛かりがありますか?

私はそう多くの似たような質問をしましたが、ほとんどの人がプロパティを失っていたので、私の問題は解決しません。製品データから製品ビジネスにプロパティをコピーしてコピーするとエラーが消えてしまうため、私のPOMファイルは疑わしいものではないと私は思う。しかし、あなたはまだ私のポンポンを見たい包み場合:

親製品POM

<project> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>com.owner</groupId> 
    <artifactId>product</artifactId> 
    <version>1.0.0-SNAPSHOT</version> 
    <packaging>pom</packaging> 

    <properties> 
     <maven.compiler.source>1.8</maven.compiler.source> 
     <maven.compiler.target>1.8</maven.compiler.target> 
     <nopeasti.version>1.0.0-SNAPSHOT</nopeasti.version> 
    </properties> 

    <dependencies> 

    </dependencies> 

    <modules> 
     <module>product-data</module> 
     <module>product-business</module> 
     <module>product-rest</module> 
     <module>product-entities</module> 
    </modules> 
</project> 

製品データPOM

<project> 
    <artifactId>product-data</artifactId> 
    <packaging>jar</packaging> 
    <parent> 
     <groupId>com.owner</groupId> 
     <artifactId>product</artifactId> 
     <version>1.0.0-SNAPSHOT</version> 
     <relativePath>../pom.xml</relativePath> 
    </parent> 
    <dependencyManagement> 
     <dependencies> 
      <dependency> 
       <!-- Import dependency management from Spring Boot --> 
       <groupId>org.springframework.boot</groupId> 
       <artifactId>spring-boot-dependencies</artifactId> 
       <version>1.5.8.RELEASE</version> 
       <type>pom</type> 
       <scope>import</scope> 
      </dependency> 
     </dependencies> 
    </dependencyManagement> 

    <dependencies> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-data-jpa</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-test</artifactId> 
      <scope>test</scope> 
     </dependency> 
     <dependency> 
      <groupId>org.postgresql</groupId> 
      <artifactId>postgresql</artifactId> 
      <scope>runtime</scope> 
     </dependency> 
    </dependencies> 
    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.springframework.boot</groupId> 
       <artifactId>spring-boot-maven-plugin</artifactId> 
       <version>2.0.0.M6</version> 
      </plugin> 
     </plugins> 
    </build> 
</project> 

製品・ビジネスPOM

による
<project> 
    <artifactId>product-business</artifactId> 
    <packaging>jar</packaging> 
    <parent> 
     <groupId>com.owner</groupId> 
     <artifactId>product</artifactId> 
     <version>1.0.0-SNAPSHOT</version> 
     <relativePath>../pom.xml</relativePath> 
    </parent> 
    <dependencyManagement> 
     <dependencies> 
      <dependency> 
       <!-- Import dependency management from Spring Boot --> 
       <groupId>org.springframework.boot</groupId> 
       <artifactId>spring-boot-dependencies</artifactId> 
       <version>1.5.8.RELEASE</version> 
       <type>pom</type> 
       <scope>import</scope> 
      </dependency> 
     </dependencies> 
    </dependencyManagement> 
    <dependencies> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-test</artifactId> 
      <scope>test</scope> 
     </dependency> 
     <dependency> 
      <groupId>com.owner</groupId> 
      <artifactId>product-data</artifactId> 
      <scope>compile</scope> 
      <version>1.0.0-SNAPSHOT</version> 
     </dependency> 
    </dependencies> 
    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.springframework.boot</groupId> 
       <artifactId>spring-boot-maven-plugin</artifactId> 
       <version>2.0.0.M6</version> 
      </plugin> 
     </plugins> 
    </build> 
</project> 
+0

エラー:データベース・タイプNONE アクション用の組み込みデータベースドライバのクラスを決定することはできません:あなたは、組み込みデータベースを使用する場合は、サポートに入れてくださいアプリケーションが 説明を開始できませんでした1つはクラスパス上にあります。特定のプロファイルからロードするデータベース設定がある場合は、アクティブにする必要があります(プロファイルは現在アクティブではありません)。 –

+0

あなたが一緒に適合しない...輸入春ブーツの依存関係と同じバージョンで春-ブートのmaven-pluginのを使用する必要があります... – khmarbaise

+0

製品データと製品・事業の両方が春ブーツの同じバージョンを使用しています –

答えて

0

それ(一つだけapplication.propertiesを使用するアプリケーションでは、実行時に衝突があるかもしれないので、ライブラリ内のapplication.propertiesを置くことはお勧めできませんこれまで

は、この問題を解決し、まだ切り離されアーキテクチャを維持するために)クラスパスからロードされ、私は別のファイルを作成しdata.propertiesリソースの下 sフォルダにの製品データモジュールを指定して、@PropertySource注釈を設定ファイルに指定します。ここには、の製品 - データモジュールの設定ファイルがあります。 spring.datasourceプロパティは、このファイルで定義されています。その後、他の2つのモジュールでspring.datasourceプロパティーの必要はありませんでした。

@ComponentScan 
@EnableAutoConfiguration 
@SpringBootConfiguration 
@PropertySource(value = "data.properties") 
public class NopeastiDataConfig { 
    // no main needed here as this is library consumed by business layer 
} 

さらにここで読む:私は取得​​

関連する問題