2017-05-20 22 views
5

Zajmuję się tworzeniem projektu wielomodułowego w Spring Boot gdzie struktura projektu jest następujący:Dostępu rodzica z projektem zależnej w bagażniku wiosennej

com.app.parent <- parent pom with version numbers and common dependencies (POM) 
com.app.core <- repository and service layer, models, DTOs (JAR) 
com.app.rest <- rest API (WAR) 
com.app.soap <- soap API (WAR) 

Plik pom.xml dla dominującej projektu :

<artifactId>app-parent</artifactId> 
<packaging>pom</packaging> 
<name>app-parent</name> 

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

<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> 
</dependencies> 

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

plik pom.xml dla rdzenia projektu jest:

<artifactId>app-core</artifactId> 
<packaging>jar</packaging> 
<name>app-core</name> 

<parent> 
    <groupId>com.app</groupId> 
    <artifactId>app-parent</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <relativePath>../app-parent/pom.xml</relativePath> 
</parent> 

<dependencies> 
    <dependency> 
     <groupId>mysql</groupId> 
     <artifactId>mysql-connector-java</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-data-jpa</artifactId> 
    </dependency> 
</dependencies> 

pom.xml dla odpoczynku projektu jest:

<artifactId>app-rest</artifactId> 
<packaging>war</packaging> 
<name>app-rest</name> 

<parent> 
    <groupId>com.app</groupId> 
    <artifactId>app-parent</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <relativePath>../app-parent/pom.xml</relativePath> 
</parent> 

<dependencies> 
    <dependency> 
     <groupId>com.app</groupId> 
     <artifactId>app-core</artifactId> 
     <version>0.0.1-SNAPSHOT</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-web</artifactId> 
    </dependency> 
</dependencies> 

Punkt wejścia do app-rdzeniowego projektu jest:

@SpringBootApplication 
public class CoreApplication { 

    public static void main(String[] args) { 
     SpringApplication.run(CoreApplication.class, args); 
    } 
} 

Punkt wejścia do App-reszta projekt wygląda dokładnie tak samo.

Utworzono plik application.properties w obrębie core/src/main/resources/, który zawiera konfigurację bazy danych itp. I mogę skompilować/przetestować projekt z rdzeniem aplikacji. Jednak, gdy próbuję uruchomić lub testowania aplikacji, reszta projektu pojawiają się błędy związane z brakiem application.properties pliku

Nie można określić osadzone klasę sterownika bazy danych dla bazy danych typu NONE. Jeśli chcesz osadzoną bazę danych, umieść obsługiwaną w ścieżce klas.

Jak uzyskać projekt podrzędny, aby załadować plik rodzica application.properties? Czy muszę utworzyć dowiązanie symboliczne do pliku nadrzędnego, czy też wyraźnie załadować plik właściwości rodzica poprzez @PropertySource? Co robią inni w tym scenariuszu?

Odpowiedz

0

Utwórz inny moduł dla konfiguracji (powiedzmy config) i umieść plik application.properties w config/src/main/resources /.

Dodaj moduł konfiguracyjny jako zależność do dowolnego modułu, który używa tych samych konfiguracji i gotowe.