SpringBootの依存関係管理と自動バージョン調停メカニズム

Web開発を行っているときに、Spring Bootに依存関係を1つだけインポートする必要があり、Web開発に関連するすべてのパッケージがインポートされるのはなぜですか?
Web開発の依存関係をインポートします。

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>

Web開発に関連するすべてのパッケージが付属し
ここに写真の説明を挿入
ています。開発プロセス中にガイドパッケージの問題を心配する必要はなく、直接使用できます。なぜこれが発生するのでしょうか。

依存関係の管理

1.親プロジェクト

まず、彼の親プロジェクトを見てみましょう。各SpringBootプロジェクトには、そのような親プロジェクトのコンテンツがあります。
例:

    <!--父项目-->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.4.1</version>
    </parent>

この親プロジェクトの役割は、通常、依存関係の管理を行うことです。親プロジェクトで宣言された依存関係が多数ある場合があります。子プロジェクトが親プロジェクトに基づいている限り、子プロジェクトは将来の依存関係を書き込むためにバージョン番号を必要としません。私のプロジェクトが親プロジェクト(バージョン番号2.4.1)に基づいていた後、後で他の依存関係を導入しました。次のように、バージョン番号を記述しませんでした。


    <!--父项目-->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.4.1</version>
    </parent>

    <!--web插件-->
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>


    <!--简化部署,把项目打成jar包,直接在目标服务器执行即可。-->
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

したがって、親プロジェクトは依存関係の管理に使用されます。

2.自動バージョン調停メカニズム

ここに写真の説明を挿入

親プロジェクトをクリックしてそのコンテンツを表示します。コンテンツは次のとおりです。
ここに写真の説明を挿入

親プロジェクトがあることがわかりました。引き続きクリックしてコンテンツを表示します。いくつかのスクリーンショットは次のとおりです。

ここに写真の説明を挿入

ここに写真の説明を挿入

開発プロセスで使用する必要があるすべての一般的なjarパッケージのバージョン番号と依存関係を宣言していることがわかります。つまり、多くのjarパッケージのバージョン番号と依存関係をspring-boot-dependenciesで宣言しているため、記述する必要はありません。バージョン番号。これは自動バージョン調停メカニズムです。

3.バージョン調停メカニズムによって提供されるバージョン番号を使用しない方法

ここに写真の説明を挿入

たとえば、デフォルトで提供されているmysqlドライバーの8.0.22バージョンを使用したくないが、5.1.47のmysqlバージョンを使用したい場合はどうすればよいですか?
2つの解決策がありますが、実際には、どちらもmavenが提供する機能を使用しています。最も優先度の高い原則は次のとおりです。

a。<プロパティ>を使用します

ここに写真の説明を挿入
その後、mysqlドライバーがバージョン番号5.1.47をインポートしたことがわかります。スクリーンショットは、次のとおりです。
ここに写真の説明を挿入

b。依存関係をインポートするときにバージョン番号を直接追加します

ここに写真の説明を挿入
これらの2つの方法は、実際にはmavenが提供する機能を使用しています。最も近い優先順位の原則は、現在のプロジェクトで構成されている依存関係のバージョン番号を使用することです。現在のプロジェクトでバージョン番号が構成されていない場合は、親プロジェクトでバージョン番号を見つけます。

おすすめ

転載: blog.csdn.net/MrYushiwen/article/details/111866287