Ответ 1
Недопустимая зависимость:
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-test</artifactId>
<version>4.0.4.RELEASE</version>
</dependency>
Я пытаюсь написать тест безопасности весны, как описано здесь http://docs.spring.io/spring-security/site/docs/4.0.x/reference/htmlsingle/#test-mockmvc-setup. Мне нужно импортировать SecurityMockMvcConfigurers
как статический импорт, но моя среда IDE не находит класс.
Мой pom.xml выглядит следующим образом:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.4.0.M2</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-security</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
Spring Boot 1.4.0.M2 импортирует Spring Security 4.0.4.RELEASE. Я не могу найти класс в этой версии. Какая дополнительная зависимость мне нужна? Или что еще я не рассматривал?
Недопустимая зависимость:
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-test</artifactId>
<version>4.0.4.RELEASE</version>
</dependency>
Необходимая зависимость для класса org.springframework.security.test.web.servlet.setup.SecurityMockMvcConfigurers
- это зависимость org.springframework.security:spring-security-test
.
Вопрос связан с тегом Spring Boot и Spring Boot, который обеспечивает зависимость в качестве управляемой зависимости в spring-boot-starter-parent
помпе spring-boot-starter-parent
.
Ваш pom наследует очень вероятно от spring-boot-starter-parent
.
Поэтому прежде всего не указывайте версию без уважительной причины и просто используйте версию, унаследованную от родителя.
Этого достаточно:
<dependencies>
...
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-test</artifactId>
<scope>test</scope>
</dependency>
...
<dependencies>
Например, с Spring Boot 2.0.0.M5, управляемая версия
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-test</artifactId>
<version>5.0.0.M5</version>
</dependency>
M5
- это не просто случайность.
Они предназначены для совместной работы.
Обратите внимание, что org.springframework.boot:spring-boot-starter-test
не вытягивает зависимость от org.springframework.boot:spring-boot-starter-test
spring-security-test
.
В случае, если вы не используете Spring Boot, вам следует попытаться указать версию spring-security-test
соответствии с версией Core Spring, используемой приложением.
Класс SecurityMockMvcConfigurers включен в
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-test</artifactId>
<version>4.2.1.RELEASE</version>
</dependency>
В других версиях SecurityMockMvcConfigurers может не существовать.
Однако есть класс MockMvcConfigurer, может быть, вы можете работать с этим вместо этого?
относительно: но эта зависимость не содержит соответствующий класс.
Да, вы правы, что класс не включен в банку. Поэтому я думаю, вы должны использовать то, что есть. Во всяком случае, класс довольно прост, и исходный код здесь: SecurityMockMvcConfigurers
Просто скопируйте код в своем классе, и все готово.