web-dev-qa-db-ja.com

spring-bootを使用したMavenモジュール

次のようなモジュールを作成して、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アプリケーションに「スプリングブート」を使用します。

「app-web」がスプリングブートアプリケーションになるようにMavenを構成する方法はありますか?

私が直面している問題は、親としてスプリングブートを使用する必要があるということです。

33
heldt

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>
55
Dave Syer

別の代替方法は、この post に示すように、スプリングブートの親宣言である親pomに含めることです。

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>

バージョン管理に関しては、これらの例で使用したものは正確にベストプラクティスではありませんが、質問の範囲外であるため、dependencyManagementおよび親プロパティの使用をスキップしました。

また、すべてのモジュールで使用されるスターターがある場合、親pomで依存関係を宣言すると、すべてのモジュールがそれを継承します(たとえばspring-boot-starter-test

9
saljuama