Existe-t-il une approche spécifique recommandée pour l'inclusion du pom parent spring-boot dans les projets qui ont déjà un POM parent requis?
Que recommandez-vous pour les projets qui doivent s'étendre à partir d'un parent organisationnel (c'est extrêmement courant et même quelque chose de beaucoup / la plupart des projets publiés sur Maven central en fonction des dépôts d'alimentation dont ils proviennent). La plupart des éléments de construction sont liés à la création de JAR exécutables (par exemple, l'exécution de Tomcat / Jetty intégré). Il existe des moyens de structurer les choses afin que vous puissiez obtenir toutes les dépendances sans s'étendre d'un parent (similaire à la composition ou à l'héritage). Cependant, vous ne pouvez pas obtenir une construction de cette façon.
Il est donc préférable d'inclure tout le pom parent de démarrage à ressort dans le POM parent requis ou d'avoir simplement une dépendance POM dans le fichier POM du projet.
Autres options?
TIA,
Scott
la source
project-parent
je pourrais ajouter quelquespring-boot-starter-parent
choseproject-parent
- est-ce que ça va? Ai-je également besoinspring-boot-dependencies
dans une telle situation? 2: Projet de démarrage à ressort normal que je lance en utilisant spring-boot: run. Comment exécuter un projet avec un pom parent différent?spring-boot:run
), vous devez les réfuter séparément. Vous pouvez copier-coller à partir du parent Boot si vous le souhaitez.Mise à jour 2018-01-04 avec 1.5.9.RELEASE.
J'ai le code complet et l'exemple exécutable ici https://www.surasint.com/spring-boot-with-no-parent-example/
Vous en avez besoin comme base
<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>
Mais cela ne suffit pas, vous devez également définir explicitement l'objectif pour spring-boot-maven-plugin (si vous utilisez Spring Boot comme parent, vous n'avez pas à définir explicitement cela)
<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>
Sinon, vous ne pouvez pas créer en tant que fichier jar ou war exécutable.
Pas encore, si vous utilisez JSP, vous devez avoir ceci:
<properties> <failOnMissingWebXml>false</failOnMissingWebXml> </properties>
Sinon, vous obtiendrez ce message d'erreur:
NON NON, ce n'est toujours pas suffisant si vous utilisez le profil Maven et le filtre de ressources avec Spring Boot avec "@" au lieu de "$ {}" (comme cet exemple https://www.surasint.com/spring-boot-maven -resource-filter / ). Ensuite, vous devez ajouter explicitement ceci dans
<resources> <resource> <directory>src/main/resources</directory> <filtering>true</filtering> </resource> </resources>
Et cela dans
<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>
Voir l'exemple dans le lien https://www.surasint.com/spring-boot-with-no-parent-example/ .
la source
Selon la réponse de Surasin Tancharoen, vous pouvez également définir le plugin maven surefire
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>${maven-surefire-plugin.version}</version> </plugin>
et éventuellement inclure un plugin rapide
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-failsafe-plugin</artifactId> <version>${maven-failsafe-plugin.version}</version> <executions> <execution> <goals> <goal>integration-test</goal> <goal>verify</goal> </goals> </execution> </executions> </plugin>
la source