Maven - versi Spring Boot Starter

Sep 26 2020

Saya bukan ahli tentang versi permulaan boot musim semi dan pernah menghadapi masalah. Saya mencoba membangun proyek saya dengan starter boot musim semi ini . Dan saya membutuhkan versi perpustakaan yang disematkan menjadi 5.2.0 seperti yang dikatakan dalam deskripsi file jar ini. Tetapi ketika saya menambahkan ketergantungan ini ke dalam proyek saya, saya menemukan bahwa versi perpustakaan yang disematkan berbeda dari yang saya harapkan. Plugin maven saya menunjukkan bahwa versi 5.1.6 dan kode saya tidak dapat dikompilasi karena beberapa kelas bergantung pada metode dari modul 5.2.0.

Dan ada satu hal lagi. Di proyek lain saya menambahkan ketergantungan yang sama. Tapi tidak apa-apa, versinya sama dengan deskripsi dari maven repositoty. Ada perbedaan antara kedua proyek ini. Salah satunya dengan versi semi-boot 2.1.9 (yang tidak dapat dikompilasi) dan lainnya - 2.3.4 (yang berfungsi dengan baik). Dan ketika saya memeriksa versi berisi ke dalam perpustakaan pemula melalui artefactId di pom - semuanya baik-baik saja dan 5.2.0.

Di sini pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
    <artifactId>adapters</artifactId>
    <groupId>com.alarislabs</groupId>
    <version>0.0.1</version>
</parent>
<modelVersion>4.0.0</modelVersion>

<artifactId>security</artifactId>

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-oauth2-resource-server</artifactId>
        <version>2.2.0.RELEASE</version>
    </dependency>
</dependencies>

Saya sudah mencoba menghapus m2 repo dengan semua dependensi maven dan kemudian mengunduh lagi tetapi saya masih mengalami masalah. Saya telah membuat kesalahan di pom.xml? Mungkin ada yang salah dengan IntelliJ saya?

Versi ketergantungan di pom

Versi plugin salah

Versi yang benar di plugin

Jawaban

2 gtiwari333 Sep 26 2020 at 02:38

Spring Boot mengelola beberapa versi dependensi sehingga kami dapat memastikannya kompatibel satu sama lain.

Lihat file pom.xml ini untuk melihat versi dependensi mana yang dikelola oleh Spring Boot 2.3.4.RELEASE. Anda dapat mengubah nomor versi dan melihat dependensi yang dikelola dalam versi itu.

https://repo1.maven.org/maven2/org/springframework/boot/spring-boot-dependencies/2.3.4.RELEASE/spring-boot-dependencies-2.3.4.RELEASE.pom

Manfaat:

  • Jika Anda ingin menggunakan dependensi dari daftar dependensi, Anda tidak perlu menentukan versinya di pom.xml Anda. Atau periksa apakah spring-boot-starter resmi untuk dependensi itu ada. Jika ada, cukup gunakan dependensi spring-boot-starter. Sekali lagi tidak perlu menentukan versinya.
  • Spring akan menarik dependensi yang berfungsi baik dengan semua library lain sehingga Anda tidak akan mendapatkan error kompatibilitas (waktu proses atau waktu kompilasi)
  • Saat Anda meningkatkan versi boot musim semi, semua dependensi yang dikelola akan diperbarui. Dan juga kompatibilitasnya tetap terjaga.

Bagaimana mengatasi masalah Anda:

Di pom.xml Anda, Anda tidak perlu menentukan versinya spring-boot-starter-oauth2-resource-server. Perpustakaan ini dikelola dengan boot musim semi. Sepertinya Anda menetapkan versi 2.2.0 yang tidak kompatibel dengan versi boot musim semi 2.1.9.