2015-10-16 4 views
1

Nous avons une application Spring Boot (exposant les services REST) ​​avec plusieurs modules et à des fins de développement, nous utilisons l'approche Spring Boot par défaut - Maven la construit comme un fichier war exécutable, qui intègre Tomcat. dans ça.Application de démarrage Spring Module multiple

Pour des raisons de déploiement productif, cela ne fonctionne pas. Nous avons déjà installé des serveurs d'applications web et nous avons besoin d'une guerre régulière, non-exécutable, qui peut être déployée sur ces serveurs. J'ai déjà compris, comment je peux le construire.

Nous aurons également d'autres applications Web connexes (fichiers war) déployées sur les mêmes serveurs productifs (par exemple, un simulateur de l'application). Bien sûr, ils utiliseront (certains de) les mêmes modules, donc la question qu'il soulève est de savoir comment configurer maven pour construire la guerre et les jars de module en dehors de celui-ci, donc les autres applications (fichiers war déployés sur le même serveur) pourraient avoir des dépendances sur eux. Je ne pouvais pas trouver une bonne explication/exemple comment faire cela.

Des idées, des liens, des blogs?

Répondre

0

C'est vraiment plus une question Maven que Spring Boot. Lorsque vous avez un projet multi-module, Maven crée toujours des artefacts individuels pour chaque module, vous pouvez donc les référencer en tant que dépendances ailleurs. Par exemple, dans ma configuration avec Spring Boot, j'ai le projet parent et les modules sous-jacents. La plupart des modules sont des artefacts jar, certains avec des dépendances sur d'autres modules dans le projet et bien sûr des dépendances externes. En utilisant le parent, nous pouvons normaliser certaines des versions utilisées dans les dépendances en utilisant des espaces réservés dans le parent. Puisque les artefacts sont encore construits et publiés séparément, vous pouvez les référencer dans d'autres projets, ce que je crois que vous demandez.

Par exemple (seulement les balises principales et ne sont pas tous d'entre eux):

Parent:

<groupId>com.somecompany</groupId> 
<artifactId>project-parent</artifactId> 
<packaging>pom</packaging> 
<version>1.1.2-SNAPSHOT</version> 
<modules> 
    <module>module1</module> 
    <module>module2</module> 
</modules> 

Module1:

<parent> 
    <groupId>com.somecompany</groupId> 
    <artifactId>project-parent</artifactId> 
    <version>1.1.2-SNAPSHOT</version> 
</parent> 

<groupId>com.somecompany.tools</groupId> 
<artifactId>project-tools-core</artifactId> 
<version>1.1.2-SNAPSHOT</version> 
<packaging>jar</packaging> 

Module2:

<parent> 
    <groupId>com.somecompany</groupId> 
    <artifactId>project-parent</artifactId> 
    <version>1.1.2-SNAPSHOT</version> 
</parent> 

<groupId>com.somecompany.apps</groupId> 
<artifactId>project-webapp</artifactId> 
<version>1.1.2-SNAPSHOT</version> 
<packaging>war</packaging> 
<!-- dependency on other module --> 
<dependency> 
    <groupId>com.somecompany.tools</groupId> 
    <artifactId>project-tools-core</artifactId> 
    <version>${project.version}</version> 
</dependency> 

Certains Autre projet:Dans ce cas, en supposant que vous ayez publié la version 1.1.1 de votre parent et de ses modules, vous pouvez faire en sorte qu'un autre projet fasse référence à l'un de ces artefacts publiés. Peut-être que c'est l'étape de publication et de publication qui vous manque.