Перейти к содержимому

Spring boot starter parent что это

  • автор:

Зачем нужен Spring Boot Starter Parent?

В этом руководстве мы узнаем о spring-boot-starter-parent и о том, как мы можем извлечь из этого пользу для лучшего управления зависимостями, конфигураций по умолчанию для плагинов и быстрой сборки наших приложений Spring Boot .

Мы также увидим, как мы можем переопределить версии существующих зависимостей и свойств, предоставленных starter-parent.

2. Spring Boot Starter Parent​

Проект spring-boot-starter-parent — это специальный начальный проект, который предоставляет конфигурации по умолчанию для нашего приложения и полное дерево зависимостей для быстрой сборки нашего проекта Spring Boot .

Он также предоставляет конфигурацию по умолчанию для плагинов Maven, таких как maven-failsafe-plugin , maven-jar-plugin , maven-surefire-plugin , maven-war-plugin .

Кроме того, он также наследует управление зависимостями от spring-boot-dependencies , которые являются родительскими для s pring-boot-starter-parent .

Мы можем начать использовать его в нашем проекте, добавив его в качестве родителя в pom.xml нашего проекта :

 parent>   groupId>org.springframework.bootgroupId>   artifactId>spring-boot-starter-parentartifactId>   version>2.4.0version>   parent> 

Мы всегда можем получить последнюю версию spring-boot-starter-parent из Maven Central.

3. Управление зависимостями​

Как только мы объявили начальный родитель в нашем проекте, мы можем получить любую зависимость от родителя, просто объявив ее в нашем теге зависимостей .

Кроме того, нам не нужно определять версии зависимостей, Maven будет загружать файлы jar на основе версии, определенной для начального родителя в родительском теге.

Например, если мы создаем веб-проект, мы можем добавить spring-boot-starter-web напрямую, и нам не нужно указывать версию:

 dependencies>   dependency>   groupId>org.springframework.bootgroupId>   artifactId>spring-boot-starter-webartifactId>   dependency>   dependencies> 

4. Тег управления зависимостями​

Чтобы управлять другой версией зависимости, предоставленной начальным родителем, мы можем явно объявить зависимость и ее версию в разделе dependencyManagement :

 dependencyManagement>   dependencies>   dependency>   groupId>org.springframework.bootgroupId>   artifactId>spring-boot-starter-data-jpaartifactId>   version>2.4.0version>   dependency>   dependencies>   dependencyManagement> 

5. Свойства​

Чтобы изменить значение любого свойства, определенного в начальном родительском элементе, мы можем повторно объявить его в нашем разделе свойств.

Spring -boot-starter-parent через свои родительские зависимости spring-boot использует свойства для настройки всех версий зависимостей, версии Java и версий плагинов Maven.

Таким образом, нам легко управлять этими конфигурациями, просто изменяя соответствующее свойство.

Если мы хотим изменить версию какой-либо зависимости, которую мы хотим извлечь из начального родителя, мы можем добавить зависимость в тег зависимости и напрямую настроить ее свойство:

 properties>   junit.version>4.11junit.version>   properties> 

6. Переопределение других свойств​

Мы также можем использовать свойства для других конфигураций, таких как управление версиями плагинов, или даже для некоторых базовых конфигураций, таких как управление версией Java, исходной кодировкой.

Нам просто нужно повторно объявить свойство с новым значением.

Например, чтобы изменить версию Java, мы можем указать ее в свойстве java.version :

 properties>   java.version>1.8java.version>   properties> 

7. Проект Spring Boot без стартового родителя​

Иногда у нас есть собственный родитель Maven. Или мы можем предпочесть объявить все наши конфигурации Maven вручную.

В этом случае мы можем отказаться от использования проекта spring-boot-starter-parent . Но мы все еще можем извлечь выгоду из его дерева зависимостей, добавив зависимость spring-boot-dependencies в наш проект в области импорта .

Давайте объясним это на простом примере, в котором мы хотим использовать другого родителя, отличного от начального родителя:

 parent>   groupId>com.foreachgroupId>   artifactId>spring-boot-parentartifactId>   version>1.0.0-SNAPSHOTversion>   parent> 

Здесь мы использовали родительские модули другого проекта в качестве нашей родительской зависимости.

Теперь, в этом случае, мы все еще можем получить те же преимущества управления зависимостями, добавив его в область импорта и тип pom :

 dependencyManagement>   dependencies>   dependency>   groupId>org.springframework.bootgroupId>   artifactId>spring-boot-dependenciesartifactId>   version>2.2.6.RELEASEversion>   type>pomtype>   scope>importscope>   dependency>   dependencies>   dependencyManagement> 

Кроме того, мы можем получить любую зависимость, просто объявив ее в зависимостях , как мы это делали в наших предыдущих примерах. Для этих зависимостей номера версий не нужны.

8. Резюме​

В этом руководстве мы представили обзор spring-boot-starter-parent и преимущества добавления его в качестве родителя в любой дочерний проект.

Далее мы узнали, как управлять зависимостями. Мы можем переопределить зависимости в dependencyManagement или через свойства.

Исходный код для фрагментов, используемых в этом руководстве, доступен на Github , один из которых использует начальный родительский элемент, а другой — пользовательский родительский элемент.

  • 1. Введение
  • 2. Spring Boot Starter Parent
  • 3. Управление зависимостями
  • 4. Тег управления зависимостями
  • 5. Свойства
  • 6. Переопределение других свойств
  • 7. Проект Spring Boot без стартового родителя
  • 8. Резюме

Введение в Spring Boot Starters

Управление зависимостями является критическим аспектом любого сложного проекта. И делать это вручную далеко не идеально; чем больше времени вы потратили на это, тем меньше у вас осталось времени на другие важные аспекты проекта.

Стартеры Spring Boot были созданы именно для решения этой проблемы. Стартовые POM — это набор удобных дескрипторов зависимостей, которые вы можете включить в свое приложение. Вы получаете универсальный магазин для всех необходимых вам Spring и сопутствующих технологий, без необходимости искать примеры кода и копировать и вставлять множество дескрипторов зависимостей.

У нас есть более 30 загрузчиков — давайте рассмотрим некоторые из них в следующих разделах.

2. Веб-стартер

Во-первых, давайте рассмотрим разработку службы REST; мы можем использовать такие библиотеки, как Spring MVC, Tomcat и Jackson — множество зависимостей для одного приложения.

Стартеры Spring Boot могут помочь уменьшить количество добавляемых вручную зависимостей, просто добавив одну зависимость. Поэтому вместо того, чтобы вручную указывать зависимости, просто добавьте один стартер, как в следующем примере:

 dependency>   groupId>org.springframework.bootgroupId>   artifactId>spring-boot-starter-webartifactId>   dependency> 

Теперь мы можем создать REST-контроллер. Для простоты мы не будем использовать базу данных и сосредоточимся на контроллере REST:

 @RestController   public class GenericEntityController    private ListGenericEntity> entityList = new ArrayList>();    @RequestMapping("/entity/all")   public ListGenericEntity> findAll()    return entityList;   >    @RequestMapping(value = "/entity", method = RequestMethod.POST)   public GenericEntity addEntity(GenericEntity entity)    entityList.add(entity);   return entity;   >    @RequestMapping("/entity/findby/")   public GenericEntity findById(@PathVariable Long id)    return entityList.stream().   filter(entity -> entity.getId().equals(id)).   findFirst().get();   >   > 

GenericEntity — это простой компонент с идентификатором типа Long и значением типа String .

Вот и все — при запущенном приложении вы можете получить доступ к http://localhost:8080/entity/all и проверить, работает ли контроллер.

Мы создали приложение REST с минимальной конфигурацией.

3. Тестовый стартер

Для тестирования мы обычно используем следующий набор библиотек: Spring Test, JUnit, Hamcrest и Mockito. Мы можем включить все эти библиотеки вручную, но Spring Boot starter можно использовать для автоматического включения этих библиотек следующим образом:

 dependency>   groupId>org.springframework.bootgroupId>   artifactId>spring-boot-starter-testartifactId>   scope>testscope>   dependency> 

Обратите внимание, что вам не нужно указывать номер версии артефакта. Spring Boot определит, какую версию использовать — все, что вам нужно указать, это версию артефакта spring-boot-starter-parent . Если позже вам понадобится обновить загрузочную библиотеку и зависимости, просто обновите загрузочную версию в одном месте, и она позаботится обо всем остальном.

Давайте на самом деле протестируем контроллер, который мы создали в предыдущем примере.

Проверить контроллер можно двумя способами:

  • Использование фиктивной среды
  • Использование встроенного контейнера сервлетов (например, Tomcat или Jetty)

В этом примере мы будем использовать фиктивную среду:

 @RunWith(SpringJUnit4ClassRunner.class)   @SpringApplicationConfiguration(classes = Application.class)   @WebAppConfiguration   public class SpringBootApplicationIntegrationTest    @Autowired   private WebApplicationContext webApplicationContext;   private MockMvc mockMvc;    @Before   public void setupMockMvc()    mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).build();   >    @Test   public void givenRequestHasBeenMade_whenMeetsAllOfGivenConditions_thenCorrect()   throws Exception    MediaType contentType = new MediaType(MediaType.APPLICATION_JSON.getType(),   MediaType.APPLICATION_JSON.getSubtype(), Charset.forName("utf8"));   mockMvc.perform(MockMvcRequestBuilders.get("/entity/all")).   andExpect(MockMvcResultMatchers.status().isOk()).   andExpect(MockMvcResultMatchers.content().contentType(contentType)).   andExpect(jsonPath("$", hasSize(4)));   >   > 

Приведенный выше тест вызывает конечную точку /entity/all и проверяет, что ответ JSON содержит 4 элемента. Чтобы этот тест прошел, мы также должны инициализировать наш список в классе контроллера:

 public class GenericEntityController    private ListGenericEntity> entityList = new ArrayList>();       entityList.add(new GenericEntity(1l, "entity_1"));   entityList.add(new GenericEntity(2l, "entity_2"));   entityList.add(new GenericEntity(3l, "entity_3"));   entityList.add(new GenericEntity(4l, "entity_4"));   >   //.   > 

Здесь важно то, что аннотация @WebAppConfiguration и MockMVC являются частью модуля весеннего тестирования , hasSize — это сопоставитель Hamcrest, а @Before — аннотация JUnit. Все они доступны путем импорта одной этой стартовой зависимости.

4. Стартер Data JPA

Большинство веб-приложений имеют своего рода постоянство — и это довольно часто JPA.

Вместо того, чтобы определять все связанные зависимости вручную — давайте вместо этого воспользуемся стартером:

 dependency>   groupId>org.springframework.bootgroupId>   artifactId>spring-boot-starter-data-jpaartifactId>   dependency>   dependency>   groupId>com.h2databasegroupId>   artifactId>h2artifactId>   scope>runtimescope>   dependency> 

Обратите внимание, что из коробки у нас есть автоматическая поддержка как минимум следующих баз данных: H2, Derby и Hsqldb. В нашем примере мы будем использовать H2.

Теперь давайте создадим репозиторий для нашей сущности:

 public interface GenericEntityRepository extends JpaRepositoryGenericEntity, Long> > 

Время протестировать код. Вот тест JUnit:

 @RunWith(SpringJUnit4ClassRunner.class)   @SpringApplicationConfiguration(classes = Application.class)   public class SpringBootJPATest     @Autowired   private GenericEntityRepository genericEntityRepository;    @Test   public void givenGenericEntityRepository_whenSaveAndRetreiveEntity_thenOK()    GenericEntity genericEntity =   genericEntityRepository.save(new GenericEntity("test"));   GenericEntity foundedEntity =   genericEntityRepository.findOne(genericEntity.getId());    assertNotNull(foundedEntity);   assertEquals(genericEntity.getValue(), foundedEntity.getValue());   >   > 

Мы не тратили время на указание поставщика базы данных, URL-подключения и учетных данных. Никаких дополнительных настроек не требуется, так как мы пользуемся фиксированными настройками загрузки по умолчанию; но, конечно, все эти детали можно настроить при необходимости.

5. Почтовый стартер

Очень распространенной задачей в корпоративной разработке является отправка электронной почты, и работа напрямую с Java Mail API обычно может быть затруднена.

Spring Boot starter скрывает эту сложность — почтовые зависимости можно указать следующим образом:

 dependency>   groupId>org.springframework.bootgroupId>   artifactId>spring-boot-starter-mailartifactId>   dependency> 

Теперь мы можем напрямую использовать JavaMailSender , так что давайте напишем несколько тестов.

Для тестирования нам понадобится простой SMTP-сервер. В этом примере мы будем использовать Wiser. Вот как мы можем включить его в наш POM:

 dependency>   groupId>org.subethamailgroupId>   artifactId>subethasmtpartifactId>   version>3.1.7version>   scope>testscope>   dependency> 

Последнюю версию Wiser можно найти в центральном репозитории Maven .

Вот исходный код теста:

 @RunWith(SpringJUnit4ClassRunner.class)   @SpringApplicationConfiguration(classes = Application.class)   public class SpringBootMailTest    @Autowired   private JavaMailSender javaMailSender;    private Wiser wiser;    private String userTo = "user2@localhost";   private String userFrom = "user1@localhost";   private String subject = "Test subject";   private String textMail = "Text subject mail";    @Before   public void setUp() throws Exception    final int TEST_PORT = 25;   wiser = new Wiser(TEST_PORT);   wiser.start();   >    @After   public void tearDown() throws Exception    wiser.stop();   >    @Test   public void givenMail_whenSendAndReceived_thenCorrect() throws Exception    SimpleMailMessage message = composeEmailMessage();   javaMailSender.send(message);   ListWiserMessage> messages = wiser.getMessages();    assertThat(messages, hasSize(1));   WiserMessage wiserMessage = messages.get(0);   assertEquals(userFrom, wiserMessage.getEnvelopeSender());   assertEquals(userTo, wiserMessage.getEnvelopeReceiver());   assertEquals(subject, getSubject(wiserMessage));   assertEquals(textMail, getMessage(wiserMessage));   >    private String getMessage(WiserMessage wiserMessage)   throws MessagingException, IOException    return wiserMessage.getMimeMessage().getContent().toString().trim();   >    private String getSubject(WiserMessage wiserMessage) throws MessagingException    return wiserMessage.getMimeMessage().getSubject();   >    private SimpleMailMessage composeEmailMessage()    SimpleMailMessage mailMessage = new SimpleMailMessage();   mailMessage.setTo(userTo);   mailMessage.setReplyTo(userFrom);   mailMessage.setFrom(userFrom);   mailMessage.setSubject(subject);   mailMessage.setText(textMail);   return mailMessage;   >   > 

В тесте методы @Before и @After отвечают за запуск и остановку почтового сервера.

Обратите внимание, что мы подключаем bean-компонент JavaMailSender — bean-компонент был автоматически создан Spring Boot .

Как и любые другие значения по умолчанию в Boot, параметры электронной почты для JavaMailSender можно настроить в application.properties :

spring.mail.host=localhost spring.mail.port=25 spring.mail.properties.mail.smtp.auth=false 

Итак, мы настроили почтовый сервер на localhost:25 и не требовали аутентификации.

6. Заключение

В этой статье мы дали обзор Starters, объяснили, зачем они нам нужны, и привели примеры того, как их использовать в ваших проектах.

Давайте вспомним преимущества использования стартеров Spring Boot:

  • повысить управляемость помпонами
  • готовые к производству, протестированные и поддерживаемые конфигурации зависимостей
  • сократить общее время настройки проекта

Актуальный список стартеров можно посмотреть здесь . Исходный код для примеров можно найти здесь .

Spring boot starter parent что это

Из-за громоздкой конфигурации зависимостей настройка Spring для корпоративных приложений превратилась в весьма утомительное и подверженное ошибкам занятие. Особенно это относится к приложениям, которые используют также несколько сторонних библиотек.

Каждый раз, создавая очередное корпоративное Java-приложение на основе Spring, вам необходимо повторять одни и те же рутинные шаги по его настройке:

  • В зависимости от типа создаваемого приложения (Spring MVC, Spring JDBC, Spring ORM и т. д.) импортировать необходимые Spring-модули
  • Импортировать библиотеку web-контейнеров (в случае web-приложений)
  • Импортировать необходимые сторонние библиотеки (например, Hibernate, Jackson), при этом вы должны искать версии, совместимые с указанной версией Spring
  • Конфигурировать компоненты DAO, такие, как: источники данных, управление транзакциями и т. д.
  • Конфигурировать компоненты web-слоя, такие, как: диспетчер ресурсов, view resolver
  • Определить класс, который загрузит все необходимые конфигурации

1. Представляем Spring Boot

Авторы Spring решили предоставить разработчикам некоторые утилиты, которые автоматизируют процедуру настройки и ускоряют процесс создания и развертывания Spring-приложений, под общим названием Spring Boot.

Spring Boot — это полезный проект, целью которого является упрощение создания приложений на основе Spring. Он позволяет наиболее простым способом создать web-приложение, требуя от разработчиков минимум усилий по его настройке и написанию кода.

2. Особенности Spring Boot

Spring Boot обладает большим функционалом, но его наиболее значимыми особенностями являются: управление зависимостями, автоматическая конфигурация и встроенные контейнеры сервлетов.

2.1. Простота управления зависимостями

Чтобы ускорить процесс управления зависимостями, Spring Boot неявно упаковывает необходимые сторонние зависимости для каждого типа приложения на основе Spring и предоставляет их разработчику посредством так называемых starter-пакетов (spring-boot-starter-web, spring-boot-starter-data-jpa и т. д.).

Starter-пакеты представляют собой набор удобных дескрипторов зависимостей, которые можно включить в свое приложение. Это позволит получить универсальное решение для всех, связанных со Spring технологий, избавляя программиста от лишнего поиска примеров кода и загрузки из них требуемых дескрипторов зависимостей (пример таких дескрипторов и стартовых пакетов будет показан ниже).

Например, если вы хотите начать использовать Spring Data JPA для доступа к базе данных, просто включите в свой проект зависимость spring-boot-starter-data-jpa и все будет готово (вам не придется искать совместимые драйверы баз данных и библиотеки Hibernate).

Если вы хотите создать Spring web-приложение, просто добавьте зависимость spring-boot-starter-web, которая подтянет в проект все библиотеки, необходимые для разработки Spring MVC-приложений, таких как spring-webmvc, jackson-json, validation-api и Tomcat.

Другими словами, Spring Boot собирает все общие зависимости и определяет их в одном месте, что позволяет разработчикам просто использовать их, вместо того, чтобы изобретать колесо каждый раз, когда они создают новое приложение.

Следовательно, при использовании Spring Boot, файл pom.xml содержит намного меньше строк, чем при использовании его в Spring-приложениях.

Обратитесь к документации, чтобы ознакомиться со всеми Spring Boot starter-пакетами.

2.2. Автоматическая конфигурация
Второй превосходной возможностью Spring Boot является автоматическая конфигурация приложения.

После выбора подходящего starter-пакета, Spring Boot попытается автоматически настроить Spring-приложение на основе добавленных вами jar-зависимостей.

Например, если вы добавите Spring-boot-starter-web, Spring Boot автоматически сконфигурирует такие зарегистрированные бины, как DispatcherServlet, ResourceHandlers, MessageSource.

Если вы используете spring-boot-starter-jdbc, Spring Boot автоматически регистрирует бины DataSource, EntityManagerFactory, TransactionManager и считывает информацию для подключения к базе данных из файла application.properties.

Если вы не собираетесь использовать базу данных, и не предоставляете никаких подробных сведений о подключении в ручном режиме, Spring Boot автоматически настроит базу в памяти, без какой-либо дополнительной конфигурации с вашей стороны (при наличии H2 или HSQL библиотек).

Автоматическая конфигурация может быть полностью переопределена в любой момент с помощью пользовательских настроек.

2.3. Встроенная поддержка сервера приложений — контейнера сервлетов

Каждое Spring Boot web-приложение включает встроенный web-сервер. Посмотрите на список контейнеров сервлетов, которые поддерживаются «из коробки».

Разработчикам теперь не надо беспокоиться о настройке контейнера сервлетов и развертывании приложения на нем. Теперь приложение может запускаться само, как исполняемый jar-файл с использованием встроенного сервера.

Если вам нужно использовать отдельный HTTP-сервер, для этого достаточно исключить зависимости по умолчанию. Spring Boot предоставляет отдельные starter-пакеты для разных HTTP-серверов.

Создание автономных web-приложений со встроенными серверами не только удобно для разработки, но и является допустимым решением для приложений корпоративного уровня и становится все более полезно в мире микросервисов. Возможность быстро упаковать весь сервис (например, аутентификацию пользователя) в автономном и полностью развертываемом артефакте, который также предоставляет API — делает установку и развертывание приложения значительно проще.

Что именно делает spring-boot-starter-parent в pom-файле?

Я разрабатываю проект, который не является Spring boot, но также spring mvc. Я имею в виду, что у меня нет этого класса, например, в моем проекте:

@SpringBootApplication public class Application extends SpringBootServletInitializer

У меня есть эти три класса для файла конфигурации spring mvc:

@Import(WebSocketConfig.class) @Configuration @EnableWebMvc @ComponentScan(basePackages = ". ") public class MainConfiguration extends WebMvcConfigurerAdapter < @Override public void addResourceHandlers(ResourceHandlerRegistry registry) < registry.addResourceHandler("/Content/**") .addResourceLocations("/Content/"); registry.addResourceHandler("/Scripts/**") .addResourceLocations("/Scripts/"); >@Bean public InternalResourceViewResolver viewResolver() < InternalResourceViewResolver viewResolver = new InternalResourceViewResolver(); viewResolver.setPrefix("/"); viewResolver.setSuffix(".jsp"); return viewResolver; >> 
public class MainInitializer extends AbstractAnnotationConfigDispatcherServletInitializer < public static HashMapresponse_code = new HashMap(); @Override protected Class[] getRootConfigClasses() < return new Class[] < MainConfiguration.class, WebSocketConfig.class>; > @Override protected Class[] getServletConfigClasses() < return null; >@Override protected String[] getServletMappings() < return new String[] < "/" >; > @Override public void onStartup(ServletContext servletContext) throws ServletException < super.onStartup(servletContext); Security.addProvider(new BouncyCastleProvider()); servletContext.addListener(new MainContextListener()); System.out.println("MainInitializer.onStartup()"); >> 
public class MainContextListener implements ServletContextListener < public void contextInitialized(ServletContextEvent servletContextEvent) < System.out.println("Context Initialized"); Security.addProvider(new BouncyCastleProvider()); >public void contextDestroyed(ServletContextEvent servletContextEvent) < System.out.println("Shutting down!"); >> 

Есть контроллер и файл jsp, и я настроил его для запуска на веб-сервере Tomcat, что странно для меня, так это то, что когда я добавляю этот фрагмент кода в мой pom, index.jsp будет появляться в браузере точно, но когда я его удаляю, он дает 404 не найденный URL для моего контроллера. Почему даже мой проект, не являющийся проектом spring boot, нуждается в родителе spring boot? Я думал, что нижеприведенный код связан с spring boot, и так как мой проект не является spring boot, а spring mvc, он не нужен. Но без этого кода, добавленного в pom, у него есть проблема:

 org.springframework.boot spring-boot-starter-parent 1.5.1.RELEASE  

Поделиться Источник 09 апреля 2017 в 09:12

4 ответа

Spring Boot предоставляет ряд «стартеров», которые позволяют добавлять jar’ы в ваш путь к классам. Например, spring-boot-starter-security,spring-boot-starter-web и т.д. «spring-boot-starter-parent» — это специальный стартёр, который предоставляет полезные значения по умолчанию Maven, то есть автоматически добавляет все необходимые jar’ы и другие вещи. Он также предоставляет раздел управления зависимостями, чтобы вы могли опустить теги версий для зависимостей, которые вы используете в pom.xml. Например, предположим, вы хотите создать веб-приложение с помощью spring boot, поэтому вам нужно добавить следующее.

  org.springframework.boot spring-boot-starter-web   

Теперь обратите внимание, что этот тег опущен. Поэтому в конечном итоге «spring-boot-starter-parent» добавляет так много вещей по умолчанию, что нам не нужно беспокоиться об этих вещах.

Поделиться 01 июня 2018 в 05:38

РЕДАКТИРОВАТЬ: Пожалуйста, обратитесь также к официальной документации

Она предоставляет место для общей конфигурации для CHILD POM , например,

Dependencies и Properties

Для e.g. вот конфигурация родительской POM 1.4.2.RELEASE spring-boot-dependencies , которая является родительской spring-boot-starter-parent

 5.13.4 2.7.7 1.9.44 1.3.0 1.8.9 2.5.0 3.9.3 2.1.4 2.3.4 

общие свойства для child POM

    org.springframework.boot spring-boot 1.4.2.RELEASE  org.springframework.boot spring-boot test-jar 1.4.2.RELEASE  

общие зависимости для дочерних POM

Поделиться 10 апреля 2017 в 08:05

Если вы можете предоставить больше информации о целостности вашего pom, мы можем посмотреть дальше, чтобы понять и помочь вам больше.

С другой стороны, родительский pom spring-boot-starter-parent содержит полные зависимости (mvc, cache, jpa) и общие свойства для поддержания версий зависимостей в хорошей последовательности, чтобы их можно было использовать в вашем проекте или/или подмодулях.

В основном, вы можете добавить некоторые начинания в ваш pom.xml в зависимости от ваших потребностей (веб, jpa, пакет. ) Для вашего примера, вы можете просто добавить запускаемый mvc в ваш pom.xml без добавления других зависимостей, поэтому ваш pom.xml может быть таким:

  org.springframework.boot spring-boot-starter-parent 1.5.9.RELEASE   org.springframework.boot spring-boot-starter-web   1.8    org.springframework.boot spring-boot-maven-plugin    

Поделиться 26 декабря 2017 в 10:44

Основная особенность spring-boot-starter-parent для меня заключается в том, что он предоставляет совместимые версии зависимостей.

Трудно сказать, что происходит без полного pom, но, как я могу предположить, у вас есть конфликт в зависимостях внутри вашего pom, и это исправляется путем добавления spring-boot-starter-parent .

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *