2017-02-22 27 views
9

Bắt một lỗi biên dịch trong Maven:SpringApplicationCấu hình không tìm thấy: Nội dung thử nghiệm khởi động mùa xuân-khởi động không đúng?

[INFO] ------------------------------------------------------------- 
[ERROR] COMPILATION ERROR : 
[INFO] ------------------------------------------------------------- 
[ERROR] /C:/prototypes/demo-sse-spring-boot-master/src/test/java/com/cedric/demo/sse/SseDemoApplicationTests.java:[6,37] package org.springframework.boot.test does not exist 
[ERROR] /C:/TITAN/demo-sse-spring-boot-master/src/test/java/com/cedric/demo/sse/SseDemoApplicationTests.java:[10,2] cannot find symbol 
    symbol: class SpringApplicationConfiguration 
[INFO] 2 errors 
[INFO] ------------------------------------------------------------- 
[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD FAILURE 
[INFO] ------------------------------------------------------------------------ 

Maven repo dường như có jar hiện:

enter image description here

howerever jar mà không có bất kỳ lớp học biên soạn bên trong nó. chỉ META-INF dir:

enter image description here

Bằng thiết kế? Tôi lấy jar ở đâu có chứa SpringApplicationConfiguration để làm cho Maven hạnh phúc?

Dưới đây là những phần liên quan của pom.xml của tôi:

<parent> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-parent</artifactId> 
     <version>1.5.1.RELEASE</version> 
     <relativePath/> 
     <!-- lookup parent from repository --> 
    </parent> 

    <properties> 
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
     <java.version>1.8</java.version> 
    </properties> 

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

     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-test</artifactId> 
      <scope>test</scope> 
     </dependency> 

     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-devtools</artifactId> 
     </dependency> 

     <dependency> 
      <groupId>org.webjars.bower</groupId> 
      <artifactId>jquery</artifactId> 
      <version>2.1.3</version> 
     </dependency> 

     <dependency> 
      <groupId>org.webjars</groupId> 
      <artifactId>bootstrap</artifactId> 
      <version>3.3.1</version> 
     </dependency> 
     <dependency> 
      <groupId>org.projectlombok</groupId> 
      <artifactId>lombok</artifactId> 
      <version>1.16.4</version> 
     </dependency> 
    </dependencies> 

    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.springframework.boot</groupId> 
       <artifactId>spring-boot-maven-plugin</artifactId> 
      </plugin> 
     </plugins> 
    </build> 

Trả lời

11

spring-boot-starter-test, giống như tất cả những người mới bắt đầu mùa xuân Boot khác, thực sự chỉ là một pom đó kéo theo một số phụ thuộc khác transitively. Nó chỉ có một cái bình để giữ một số hệ thống xây dựng mà không thích phụ thuộc pom chỉ hạnh phúc.

Dường như bạn đã nâng cấp ứng dụng từ Spring Boot 1.4 lên Spring Boot 1.5. Spring Boot 1.5 loại bỏ một số lớp không được dùng trong 1.4, bao gồm org.springframework.boot.test.SpringApplicationConfiguration.

Tôi khuyên bạn nên quay lại Spring Boot 1.4.4.RELEASE và sửa tất cả các cảnh báo không dùng nữa. Sau đó, bạn có thể nâng cấp lên Spring Boot 1.5.1.RELEASE mà không gặp khó khăn gì.

+0

Vâng, mẹo đó đã hiệu quả đối với tôi, cảm ơn. Bạn có thể chỉ cho tôi một mô tả toàn diện về cách thiết lập Maven hoạt động cho phép nó kéo các phụ thuộc mà không cần liệt kê chúng, không hoàn toàn rõ ràng về lý do tại sao 1.5.1.RELEASE không thể thực hiện nó, nó là phiên bản chính mà quyết định đã được thực hiện để ngừng hỗ trợ các mặt hàng không được chấp nhận? Cám ơn bạn một lần nữa. –

37

Trong bản phát hành, chú thích @SpringApplicationConfiguration không còn tồn tại nữa. Các chú thích mới là:

@RunWith(SpringRunner.class) 

@SpringBootTest(classes = YourApplicationMainClass.class) 

@WebAppConfiguration 
4

Như lỗi là do sự nâng cấp của mùa xuân Boot 1,4-1,5, nó quan trọng cần lưu ý (từ bên dưới) mà một số lớp học mới được giới thiệu trong 1,4 phản đối một số các hiện các lớp dẫn đầu để cuối cùng bị loại bỏ trong 1.5. Các chi tiết như vậy có thể được tìm thấy tại địa chỉ: Spring boot release notes

trích dẫn từ trang web (chỉnh sửa):

Thêm vào đó, mùa xuân Boot 1.4 (trở lên) cố gắng hợp lý hóa và đơn giản hóa những cách khác nhau mà một thử nghiệm mùa xuân Boot có thể chạy .Bạn nên di chuyển như sau để sử dụng các chú thích @SpringBootTest mới:

Từ @SpringApplicationConfiguration(classes=MyConfig.class) để @SpringBootTest(classes=MyConfig.class)

Từ @ContextConfiguration(classes=MyConfig.class, loader=SpringApplicationContextLoader.class) để @SpringBootTest(classes=MyConfig.class)

Từ @IntegrationTest để @SpringBootTest(webEnvironment=WebEnvironment.NONE)

Từ @IntegrationTest với @WebAppConfiguration để @SpringBootTest(webEnvironment=WebEnvironment.DEFINED_PORT) (or RANDOM_PORT)

Từ @WebIntegrationTest để @SpringBootTest(webEnvironment=WebEnvironment.DEFINED_PORT) (or RANDOM_PORT)

Mẹo Trong khi kiểm tra di cư bạn cũng có thể muốn thay thế bất kỳ @RunWith(SpringJUnit4ClassRunner.class) tờ khai với Spring 4.3 của dễ đọc hơn @RunWith(SpringRunner.class).

+0

Theo đó: '@SpringBootTest (lớp = YourApplicationMainClass.class)' và '@ WebIntegrationTest' với nhau từ các phiên bản trước đó chuyển thành một câu lệnh đơn trong' @SpringBootTest (classes = YourApplicationMainClass.class, webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT) ' – VanagaS

Các vấn đề liên quan