java - starter - spring-boot-maven-plugin
Módulo Maven utilizando resorte de arranque (2)
Me gusta configurar mis aplicaciones en maven creando módulos como;
<groupId>com.app</groupId>
<artifactId>example-app</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<modules>
<module>app-api</module>
<module>app-impl</module>
<module>app-web</module>
</modules>
Los módulos luego usan ''example-app'' como padre.
Ahora quiero usar ''spring-boot'' para mi aplicación web.
¿Hay alguna forma de configurar maven para que mi ''app-web'' sea una aplicación de arranque de primavera?
El problema que estoy enfrentando es que tienes que usar Spring-boot como padre.
No tiene que usar el programa de arranque de arranque de primavera, es solo una manera de comenzar rápidamente. Todo lo que proporciona es administración de la dependencia y administración de complementos. Puede hacer ambas cosas usted mismo, y puede usar las dependencias de arranque de primavera (o el equivalente) para administrar dependencias si quiere un paso intermedio. Para hacer eso, use scope=import
como esto
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<type>pom</type>
<version>1.0.2.RELEASE</version>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
Otra alternativa es incluir en el padre pom, la declaración padre para el arranque de primavera, como se muestra en esta post
example-app pom.xml:
<project>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.2.5.RELEASE</version>
</parent>
<modelVersion>4.0.0</modelVersion>
// rest of the example-app pom declarations
</project>
Después de eso, en los módulos poms (app-web, app-impl, etc.), declaras ejemplo-app como principal, pero ahora puedes incluir las dependencias iniciales como lo harías normalmente en un proyecto normal.
app-web pom.xml:
<project>
<parent>
<groupId>org.demo</groupId>
<artifactId>example-app</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<name>app-web</name>
<artifactId>app-web</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>
<dependencies>
<dependency>
<groupId>org.demo</groupId>
<artifactId>app-api</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.demo</groupId>
<artifactId>app-impl</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
</dependencies>
// rest of the app-web pom declarations
</project>
En cuanto a la gestión de versiones, lo que utilicé en estos ejemplos no son exactamente las mejores prácticas, pero como está fuera del alcance de la pregunta, omití la gestión de dependencias y el uso de propiedades principales.
Además, si hay un iniciador que se usa en cada módulo, puede declarar la dependencia en el pom padre y luego todos los módulos lo heredarán (por ejemplo, spring-boot-starter-test )