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]

См. пример в приведенной выше ссылке.