what starter que pom example configurar maven spring-boot parent-pom

maven - starter - spring-boot-dependencies



Spring Boot-pom padre cuando ya tienes un pom padre (2)

¿Existe un enfoque recomendado específico para la inclusión del pom principal de arranque de primavera en proyectos que ya tienen un POM padre requerido?

¿Qué recomiendas para los proyectos que necesitan extenderse desde un padre organizativo (esto es extremadamente común e incluso algo muchos / la mayoría de los proyectos publicados en Maven central dependiendo de los repos repositorios de donde provienen). La mayoría de las cosas de compilación están relacionadas con la creación de JAR ejecutables (por ejemplo, ejecutando Tomcat / Jetty incrustado). Hay formas de estructurar las cosas para que pueda obtener todas las dependencias sin extender desde un elemento primario (similar a la composición frente a la herencia). Sin embargo, no puedes obtener una compilación de esa manera.

Entonces, es preferible incluir todo el pom padre primario en el arranque del POM padre requerido o simplemente tener una dependencia POM dentro del archivo POM del proyecto.

¿Otras opciones?

TIA,

Scott


Actualice 2018-01-04 con 1.5.9.RELEASE.

Tengo un código completo y un ejemplo ejecutable aquí https://www.surasint.com/spring-boot-with-no-parent-example/

Necesitas esto como un básico

<dependencyManagement> <dependencies> <dependency> <!-- Import dependency management from Spring Boot --> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>${springframework.boot.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>

Pero eso no es suficiente, también es necesario definir explícitamente el objetivo para spring-boot-maven-plugin (si utiliza Spring Boot como primario, no tiene que definir explícitamente esto)

<plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <version>${springframework.boot.version}</version> <executions> <execution> <goals> <goal>repackage</goal> </goals> </execution> </executions> </plugin> </plugins>

De lo contrario, no puedes construir como jar o war ejecutable.

Todavía no, si está utilizando JSP, necesita tener esto:

<properties> <failOnMissingWebXml>false</failOnMissingWebXml> </properties>

De lo contrario, recibirá este mensaje de error:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-war-plugin:2.2:war (default-war) on project spring-boot-09: Error assembling WAR: webxml attribute is required (or pre-existing WEB-INF/web.xml if executi ng in update mode) -> [Help 1]

NO NO, esto aún no es suficiente si está utilizando Maven Profile y Resource Filter con Spring Boot con "@" en lugar de "$ {}" (como en este ejemplo https://www.surasint.com/spring-boot-maven-resource-filter/ ). Entonces necesitas agregar esto explícitamente

<resources> <resource> <directory>src/main/resources</directory> <filtering>true</filtering> </resource> </resources>

Y esto en

<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-resources-plugin</artifactId> <version>2.7</version> <configuration> <delimiters> <delimiter>@</delimiter> </delimiters> <useDefaultDelimiters>false</useDefaultDelimiters> </configuration> </plugin>

Vea el ejemplo en el enlace https://www.surasint.com/spring-boot-with-no-parent-example/ .


Puede usar spring-boot-starter-parent como un "bom" (cf. Spring y Jersey, otros proyectos que soportan esta característica ahora), e incluirlo solo en la sección de administración de dependencias con scope = import. De esa manera obtiene mucho de los beneficios de usarlo (es decir, gestión de la dependencia) sin reemplazar la configuración en su padre real.

Las 2 principales cosas que hace son

  1. define una carga de propiedades para establecer rápidamente versiones de dependencias que desea sobrescribir
  2. configurar algunos complementos con la configuración predeterminada (principalmente el complemento maven Spring Boot). Entonces esas son las cosas que tendrá que hacer manualmente si usa su propio padre.

Ejemplo proporcionado en la documentación de Spring Boot :

<dependencyManagement> <dependencies> <dependency> <!-- Import dependency management from Spring Boot --> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>1.1.5.RELEASE</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>