在Maven中获取编译错误:
[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回购似乎有罐子存在:
该jar内部没有任何已编译的类。只有META-INF目录:
这是设计吗?我在哪里获得包含 SpringApplicationConfiguration 类的jar以使Maven满意?
这是我的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>
答案 0 :(得分:69)
在您的版本中,@SpringApplicationConfiguration
注释不再存在。新注释是:
@RunWith(SpringRunner.class)
@SpringBootTest(classes = YourApplicationMainClass.class)
@WebAppConfiguration
答案 1 :(得分:18)
spring-boot-starter-test
实际上只是一个可以传递许多其他依赖项的pom。它只有一个jar来保留一些不喜欢pom-only依赖的构建系统。
看起来您已将应用程序从Spring Boot 1.4升级到Spring Boot 1.5。 Spring Boot 1.5删除了许多在1.4中弃用的类,包括org.springframework.boot.test.SpringApplicationConfiguration
。
我建议回到Spring Boot 1.4.4.RELEASE并修复所有弃用警告。然后,您应该可以毫无困难地升级到Spring Boot 1.5.1.RELEASE。
答案 2 :(得分:14)
由于错误是由于Spring Boot从1.4升级到1.5,所以需要注意的是(从下面)1.4中引入的几个新类弃用了一些现有的类,导致最终在1.5中删除。有关详细信息,请访问:Spring boot release notes
引自网站(已编辑):
此外,Spring Boot 1.4(及更高版本)尝试合理化并简化Spring Boot测试的各种运行方式。您应该迁移以下内容以使用新的@SpringBootTest注释:
从
@SpringApplicationConfiguration(classes=MyConfig.class)
到@SpringBootTest(classes=MyConfig.class)
从
@ContextConfiguration(classes=MyConfig.class, loader=SpringApplicationContextLoader.class)
到 的@SpringBootTest(classes=MyConfig.class)
强>从
@IntegrationTest
到 的@SpringBootTest(webEnvironment=WebEnvironment.NONE)
强>从
@IntegrationTest
@WebAppConfiguration
到 的@SpringBootTest(webEnvironment=WebEnvironment.DEFINED_PORT) (or RANDOM_PORT)
强>从
@WebIntegrationTest
到 的@SpringBootTest(webEnvironment=WebEnvironment.DEFINED_PORT) (or RANDOM_PORT)
强>提示在迁移测试时,您可能还需要替换任何测试 使用Spring 4.3的
@RunWith(SpringJUnit4ClassRunner.class)
声明 更具可读性@RunWith(SpringRunner.class)
。