Maven - phiên bản của Spring Boot Starter
Tôi không phải là chuyên gia về các phiên bản của trình khởi động mùa xuân và đã gặp phải vấn đề. Tôi đang cố gắng xây dựng dự án của mình bằng bộ khởi động mùa xuân này . Và tôi cần phiên bản thư viện nhúng là 5.2.0 như trong mô tả của tệp jar này. Nhưng khi tôi thêm phần phụ thuộc này vào dự án của mình, tôi thấy rằng các phiên bản thư viện nhúng khác với những gì tôi mong đợi. Các plugin maven của tôi cho thấy rằng phiên bản 5.1.6 và mã của tôi không biên dịch vì một số lớp phụ thuộc vào các phương thức từ mô-đun 5.2.0.
Và còn một điều nữa. Trong một dự án khác, tôi đã thêm phụ thuộc tương tự. Nhưng không sao cả, các phiên bản giống nhau với mô tả từ repositoty maven. Có sự khác biệt giữa hai dự án này. Một trong số chúng với phiên bản khởi động mùa xuân 2.1.9 (không biên dịch) và một - 2.3.4 (whihk hoạt động tốt). Và khi tôi kiểm tra các phiên bản chứa vào thư viện khởi động thông qua artefactId trong pom - chúng ổn và 5.2.0.
Đây 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>
Tôi đã cố gắng xóa m2 repo với tất cả các phụ thuộc maven và sau đó tải xuống lại nhưng tôi vẫn gặp sự cố. Tôi đã mắc lỗi trong pom.xml? Có thể có gì đó sai với IntelliJ của tôi?
Các phiên bản của sự phụ thuộc trong pom
Các phiên bản sai trong plugin
Các phiên bản chính xác trong plugin
Trả lời
Spring Boot quản lý một số phiên bản phụ thuộc để chúng tôi có thể đảm bảo chúng tương thích với nhau.
Nhìn vào tệp pom.xml này để xem phiên bản phụ thuộc nào được Spring Boot 2.3.4.RELEASE quản lý. Bạn có thể thay đổi số phiên bản và xem các phần phụ thuộc được quản lý trong phiên bản đó.
https://repo1.maven.org/maven2/org/springframework/boot/spring-boot-dependencies/2.3.4.RELEASE/spring-boot-dependencies-2.3.4.RELEASE.pom
Những lợi ích:
- Nếu bạn muốn sử dụng một phụ thuộc ngoài danh sách phụ thuộc, bạn không cần chỉ định phiên bản trong pom.xml của mình. Hoặc kiểm tra xem bộ khởi động lò xo chính thức cho phần phụ thuộc đó có tồn tại hay không. Nếu nó tồn tại, chỉ cần sử dụng phụ thuộc spring-boot-starter. Một lần nữa không cần chỉ định phiên bản.
- Spring sẽ kéo phần phụ thuộc hoạt động tốt với tất cả các thư viện khác để bạn không gặp lỗi tương thích (thời gian chạy hoặc thời gian biên dịch)
- Khi bạn nâng cấp phiên bản của Spring boot, tất cả các phần phụ thuộc được quản lý sẽ được cập nhật. Và khả năng tương thích cũng được duy trì.
Cách giải quyết vấn đề của bạn:
Trong pom.xml của bạn, bạn không cần chỉ định phiên bản cho spring-boot-starter-oauth2-resource-server. Thư viện này được quản lý bằng khởi động mùa xuân. Có vẻ như bạn đang chỉ định phiên bản 2.2.0 không tương thích với phiên bản khởi động mùa xuân 2.1.9 của bạn.