2017-02-22 5 views
9

einen Übersetzungsfehler in Maven bekommen:SpringApplicationConfiguration nicht gefunden: Fehlerhafter Spring-Boot-Starter-Test Inhalt?

[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 scheint das Glas vorhanden haben:

enter image description here

howerever dieses Glas keine kompilierten Klassen im Inneren hat. nur META-INF dir:

enter image description here

Ist das von Design? Wo bekomme ich das Glas, das SpringApplicationConfiguration Klasse enthält, um Maven glücklich zu machen?

Hier die relevanten Teile meines pom.xml:

<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> 

Antwort

11

spring-boot-starter-test, wie alle anderen Frühlings-Boot-Starter, ist wirklich nur ein pom, die transitively in einer Reihe von anderen Abhängigkeiten zieht. Es hat nur ein Jar, um einige Build-Systeme zu behalten, die Pom-Only-Abhängigkeiten nicht mögen.

Es sieht so aus, als ob Sie eine Anwendung von Spring Boot 1.4 auf Spring Boot 1.5 aktualisiert haben. Spring Boot 1.5 entfernt eine Reihe von Klassen, die in 1.4 veraltet waren, einschließlich org.springframework.boot.test.SpringApplicationConfiguration.

Ich würde empfehlen, auf Spring Boot 1.4.4.RELEASE zurückzugreifen und alle veralteten Warnungen zu beheben. Sie sollten dann problemlos auf Spring Boot 1.5.1.RELEASE aktualisieren können.

+0

Ja, dieser Trick funktionierte für mich, danke. Könnten Sie mich auf eine umfassende Beschreibung, wie diese Maven-Setup funktioniert, die es ermöglicht, die Abhängigkeiten zu ziehen, ohne sie zu notieren, nicht ganz klar, warum 1.5.1.RELEASE konnte es nicht getan haben, ist es eine Hauptversion bei dem die Entscheidung getroffen wurde, die Unterstützung von veralteten Produkten einzustellen? Danke nochmal. –

37

In Ihrer Version ist die @SpringApplicationConfiguration Anmerkung nicht mehr vorhanden. Die neuen Anmerkungen sind:

@RunWith(SpringRunner.class) 

@SpringBootTest(classes = YourApplicationMainClass.class) 

@WebAppConfiguration 
4

Als Fehler ist aufgrund der Aktualisierung des Frühlings-Boot 1,4-1,5, es ist wichtig (von unten) zu beachten, dass mehrere neue Klassen, die in 1.4 veraltet einige der bestehenden eingeführt werden Klassen führen zu Weg, um in 1.5 endlich entfernt zu werden. Die Einzelheiten dieser sind zu finden unter: Spring boot release notes

von Website-Zitat (bearbeitet):

Zusätzlich Frühlings-Boot 1.4 (und höher) versucht, die verschiedenen Möglichkeiten zu rationalisieren und zu vereinfachen, dass eine Feder Boot-Test durchgeführt werden kann, .Sie sollten wandern die nach dem neuen @SpringBootTest Anmerkung zu verwenden:

Von @SpringApplicationConfiguration(classes=MyConfig.class) zu @SpringBootTest(classes=MyConfig.class)

Von @ContextConfiguration(classes=MyConfig.class, loader=SpringApplicationContextLoader.class) zu @SpringBootTest(classes=MyConfig.class)

Von @IntegrationTest zu @SpringBootTest(webEnvironment=WebEnvironment.NONE)

Von @IntegrationTest mit @WebAppConfiguration zu @SpringBootTest(webEnvironment=WebEnvironment.DEFINED_PORT) (or RANDOM_PORT)

Von @WebIntegrationTest zu @SpringBootTest(webEnvironment=WebEnvironment.DEFINED_PORT) (or RANDOM_PORT)

Tipp Während Tests Migration Sie können auch alle @RunWith(SpringJUnit4ClassRunner.class) Erklärungen mit Feder 4.3 des lesbarer @RunWith(SpringRunner.class) ersetzen möchten.

+0

Dementsprechend: '@SpringBootTest (classes = YourApplicationMainClass.class)' und '@ WebIntegrationTest' zusammen aus früheren Versionen übersetzt in eine einzelne Anweisung in' @SpringBootTest (classes = YourApplicationMainClass.class, webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT) ' – VanagaS

Verwandte Themen