У меня есть многомодульная структура spring boot maven java. Моя структура:
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)
product-data вернет объект сущности в product-business, а product-business вернет объект сущности в product-rest, а product-rest вернет объект json.
product-data работает нормально. Но как только я запускаю продуктовый бизнес, я получаю сообщение об ошибке "Невозможно определить класс драйвера встроенной базы данных для типа базы данных NONE". Spring ищет свойства spring.datasource.... в моем файле product-business/src/main/resources/application.properties. Если я определяю здесь все свойства, ошибка исчезает, и я получаю данные из данных о продукте.
Но!! Я уже определил свойства в файле product-data/src/main/resources/application.properties. Почему я должен дублировать одни и те же свойства в моем бизнес-модуле продукта? Вся цель состоит в том, чтобы разделить уровни. product-data отвечает за выборку данных и должен найти свойства spring.datasource... в своей собственной структуре. Почему это заставляет меня дублировать свойства и в бизнес-модуле? Я уверен, что что-то упускаю. Кто-нибудь знает?
У меня было много подобных вопросов о SO, но в большинстве из них отсутствовали свойства, поэтому моя проблема не решается. Я предполагаю, что мои файлы 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>