Модуль Maven с помощью spring -boot
Мне нравится настраивать свои приложения в maven, создавая такие модули, как:
<groupId>com.app</groupId>
<artifactId>example-app</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<modules>
<module>app-api</module>
<module>app-impl</module>
<module>app-web</module>
</modules>
Затем модули используют "пример-приложение" в качестве родителя.
Теперь я хочу использовать 'spring -boot' для своего веб-приложения.
Есть ли способ настроить maven так, чтобы мое приложение-приложение было spring -boot-приложением?
Проблема, с которой я сталкиваюсь, заключается в том, что вы должны использовать spring -boot в качестве родителя.
Ответы
Ответ 1
Вам не нужно использовать родительский spring -boot-starter-parent, это просто способ быстро начать работу. Все это обеспечивает управление зависимостями и управление плагинами. Вы можете сделать это самостоятельно, и вы можете использовать spring -boot-зависимостей (или, что то же самое, родительский) для управления зависимостями, если вы хотите сделать шаг на полпути. Для этого используйте scope=import
, как это
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<type>pom</type>
<version>1.0.2.RELEASE</version>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
Ответ 2
Другой альтернативой является включение родительского pom, родительского объявления для загрузки spring, как показано в этом сообщении .
example-app pom.xml:
<project>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.2.5.RELEASE</version>
</parent>
<modelVersion>4.0.0</modelVersion>
// rest of the example-app pom declarations
</project>
После этого в модулях poms (app-web, app-impl и т.д.) вы объявляете example-app как родительский, но теперь вы можете включать в себя стартовые зависимости, как обычно в обычном проекте.
app-web pom.xml:
<project>
<parent>
<groupId>org.demo</groupId>
<artifactId>example-app</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<name>app-web</name>
<artifactId>app-web</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>
<dependencies>
<dependency>
<groupId>org.demo</groupId>
<artifactId>app-api</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.demo</groupId>
<artifactId>app-impl</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
</dependencies>
// rest of the app-web pom declarations
</project>
Что касается управления версиями, то, что я использовал в этих примерах, не совсем соответствует лучшим практикам, но поскольку выходит за рамки вопроса, я пропустил использование зависимостей управления и родительских свойств.
Кроме того, если в каждом модуле есть стартер, вы можете объявить зависимость в родительском pom, а затем все модули наследуют его (например, spring -boot-starter-test)