Подтвердить что ты не робот

Модуль 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 в качестве родителя.

4b9b3361

Ответ 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)