Spring Boot-Родительский pom, когда у вас уже есть родительский pom

есть ли конкретный рекомендуемый подход к включению родительского pom spring-boot в проекты, которые уже имеют необходимый Родительский POM?

Что вы рекомендуете для проектов, которые должны расширяться от организационного родителя (это чрезвычайно распространено и даже что-то много/большинство проектов, опубликованных в Maven central, в зависимости от репозиториев фидера, из которых они происходят). Большинство материалов сборки связано с созданием исполняемых банок (например, запуск встроенного Tomcat/Jetty). Есть способы структурировать вещи так, чтобы вы могли получить все зависимости, не расширяясь от родителя (подобно композиции против наследования). Вы не можете получить материал сборки таким образом.

поэтому предпочтительнее включить весь родительский pom spring-boot внутри требуемого родительского POM или просто иметь зависимость POM в файле project POM.

другие варианты?

ТИА,

Скотт

2 ответов


вы можете использовать spring-boot-starter-parent как "bom" (С. Ф. Весна и Джерси другие проекты, которые поддерживают эту функцию сейчас), и включить его только в раздел управления зависимостями с областью=импорт.Таким образом, вы получаете много преимуществ от его использования (т. е. управление зависимостями) без замены настроек в вашем фактическом родителе.

2 основные другие вещи, которые он делает, это

  1. определите нагрузку свойств для быстрого установка версий зависимостей, которые требуется переопределить
  2. настройте некоторые плагины с конфигурацией по умолчанию (в основном плагин Spring Boot maven). Таким образом, это то, что вам придется делать вручную, если вы используете своего родителя.

пример приведен в документация по весенней загрузке:

<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>

обновление 2018-01-04 с 1.5.9.ОСВОБОЖДАТЬ.

у меня есть полный код и запускаемый пример здесь 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>

в противном случае вы не можете построить как исполняемый jar или война.

еще нет, если вы используете 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]

нет нет, этого все равно недостаточно, если вы используете профиль Maven и фильтр ресурсов с весенней загрузкой с " @ "Вместо" $ {} "(как в этом примере https://www.surasint.com/spring-boot-maven-resource-filter/). Тогда вам нужно явно добавить это в

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

и это в

        <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>

см. пример в ссылке https://www.surasint.com/spring-boot-with-no-parent-example/.