Spring Boot - родительский pom, когда у вас уже есть родительский pom
Существует ли конкретный рекомендуемый подход к включению родительского помпа spring -boot в проекты, у которых уже есть требуемый родительский POM?
Что вы рекомендуете для проектов, которые должны распространяться от организационного родителя (это очень распространено и даже что-то много или большинство проектов опубликованы в Maven в центре в зависимости от репозиториев фидеров, из которых они происходят). Большая часть материалов сборки связана с созданием исполняемых JAR (например, с запуском встроенного Tomcat/Jetty). Есть способы структурирования вещей, чтобы вы могли получить все зависимости, не распространяясь на родителя (подобно составу и наследованию). Однако вы не можете получить материал для сборки.
Итак, предпочтительнее включить в родительский POM spring -boot родительский POM внутри требуемого родительского POM или просто иметь зависимость POM в файле POM проекта.
Другие варианты?
ТИА,
Скотт
Ответы
Ответ 1
Вы можете использовать spring -boot-starter-parent, например, "bom" (cf Spring и прочее Джерси проекты, которые поддерживают эту функцию сейчас), и включить его только в раздел управления зависимостями с помощью области scope = import.Таким образом, вы получаете много преимуществ от использования (т.е. управления зависимостями) без замены настроек в вашем фактическом родителе.
Две другие вещи, которые он делает, - это
- определить нагрузку свойств для быстрой настройки версий зависимостей, которые вы хотите переопределить
- настройте некоторые плагины с конфигурацией по умолчанию (в основном это плагин Spring Boot maven). Таким образом, это то, что вам придется делать вручную, если вы используете своего собственного родителя.
Пример представлен в Spring Документация по загрузке:
<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>
Ответ 2
Обновление 2017-12-23 с помощью 1.5.9.RELEASE.
У меня есть полный код и исполняемый пример здесь https://www.surasint.com/spring-boot-with-no-parent-example/
Вам нужно это в качестве основного
<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>
Но этого недостаточно, вам также нужно явно определить цель для spring -boot-maven-plugin (если вы используете Spring Boot как родительский, вам не нужно явно определять это)
<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>
В противном случае вы не сможете создать исполняемую банку или войну.
Пока нет, если вы используете JSP, вам нужно иметь это:
<properties>
<failOnMissingWebXml>false</failOnMissingWebXml>
</properties>
В противном случае вы получите сообщение об ошибке:
[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]
См. пример в приведенной выше ссылке.