Как получить другую родительскую зависимость, а также родителя Spring Boot в файле maven pom.xml?
В настоящее время я занимаюсь разработкой мультимодульного проекта Spring Boot.
Когда вы настраиваете проект Spring Boot, в вашем pom.xml
Вы должны иметь родительскую ссылку на Spring Boot, например
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.10.RELEASE</version>
</parent>
Я хотел бы, чтобы мой проект был подмодулем проекта Spring Boot более широкого проекта (т.е. я хотел бы объединить их в одну папку проекта в репо).
Теперь, обычно для настройки многомодульного проекта, вы помещаете информацию о родительском pom, как указано выше, в свой подмодуль pom.xml
,
Но с требованием иметь родителя Spring Boot в качестве требования сделать это невозможно.
Я уже видел в сети предложения, рекомендующие переместить мой субмодуль и сделать его отдельным проектом независимо, но я думаю, что это будет моим последним средством прямо сейчас, если только это не единственный путь.
Есть ли у кого-нибудь идеи о том, как добиться того, чего я хочу, или то, чего я хочу достичь, практически осуществимо или нет?
С нетерпением жду возможности услышать...
2 ответа
Вы не можете иметь разные родительские POM. Если вы не хотите расширить родительский элемент Boot в свой собственный POM-родитель и работать оттуда, что может быть осуществимо.
Другой вариант заключается в использовании Spring Boot BOM с DependencyManagement, он немного более лаконичен, когда вы хотите переопределить зависимости, например, обычно вы просто переопределяете свойство maven.
Однако при использовании спецификации вам необходимо упорядочить переопределения, а затем загрузочная спецификация будет последней в теге управления зависимостями. Пример из Spring Docs,
<dependencyManagement>
<dependencies>
<!-- Override Spring Data release train provided by Spring Boot -->
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-releasetrain</artifactId>
<version>Fowler-SR2</version>
<scope>import</scope>
<type>pom</type>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>1.5.10.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
См. https://docs.spring.io/spring-boot/docs/current/reference/html/using-boot-build-systems.html.
Для получения дополнительной информации о настройке проекта Spring Boot без использования POM Spring Boot Parent.
Вы можете создать родительский pom.xml и добавить в этот pom.xml родительский загрузочный родительский элемент, а также вы должны добавить в качестве модуля другие проекты с
Если вы добавите родительский pom.xml в модуль pom.xml, вы можете получить доступ к весенней загрузке через родительский pom.xml.
родительский проект pom.xml
...
<groupId>com.example</groupId>
<artifactId>parent-project</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<name>parent-project</name>
<description>Rent A Car Operation System Parent Project</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.0.M3</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<modules>
<module>module-1</module>
<module>module-2</module>
<module>module-3</module>
</modules>
...
модульный проект pom.xml
...
<name>module-1</name>
<description>Demo project for Spring Boot</description>
<parent>
<groupId>com.example</groupId>
<artifactId>parent-project</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
...
Вам не нужно добавлять зависимости, которые уже добавлены в родительский проект pom.xml.
Не забывай <packaging>pom</packaging>
в родительском проекте pom.xml