35

我喜欢通过创建模块来在 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>

然后,这些模块使用“example-app”作为父级。

现在我想为我的 Web 应用程序使用“spring-boot”。

有没有办法配置 maven,使我的“app-web”是一个 spring-boot 应用程序?

我面临的问题是你必须使用 spring-boot 作为父母。

4

2 回答 2

56

您不必使用 spring-boot-starter-parent,它只是一种快速入门的方法。它提供的只是依赖管理和插件管理。你可以自己做,如果你想要一个中途步骤,你可以使用 spring-boot-dependencies(或等效的父级)来管理依赖项。为此,请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>
于 2013-12-22T16:08:15.980 回答
9

另一种选择是在父 pom 中包含 spring boot的父声明,如本文所示

示例应用 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 声明为父级,但现在您可以像通常在常规项目中所做的那样包含启动器依赖项。

应用程序 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

于 2015-07-29T08:37:21.393 回答