在简单的 Maven 项目中找不到依赖 spring-boot-starter-security

Posted

技术标签:

【中文标题】在简单的 Maven 项目中找不到依赖 spring-boot-starter-security【英文标题】:The dependency spring-boot-starter-security is not found in a simple Maven project 【发布时间】:2020-11-08 21:54:40 【问题描述】:

我正在尝试在一个简单的 Spring Boot 应用程序 (Maven) 中注入 spring-boot-starter-security 依赖项。我尝试从实际 Spring 网站的“保护 Web 应用程序”教程中复制此依赖项,我还尝试将其与 spring 安全测试依赖项和 thymeleaf spring 安全依赖项一起实现。

以下是出现“未找到”错误的依赖项:

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-security</artifactId>
    </dependency>
    <dependency>
        <groupId>org.thymeleaf.extras</groupId>
        <artifactId>thymeleaf-extras-springsecurity5</artifactId>
    </dependency>

这是完整的 pom 文件:

4.0.0 org.springframework.boot spring-boot-starter-parent 2.3.1.发布 com.homehero 家庭英雄 0.0.1 战争

<properties>
    <java.version>11</java.version>
</properties>

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

    <dependency>
        <groupId>com.h2database</groupId>
        <artifactId>h2</artifactId>
        <scope>runtime</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-tomcat</artifactId>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
        <exclusions>
            <exclusion>
                <groupId>org.junit.vintage</groupId>
                <artifactId>junit-vintage-engine</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-security</artifactId>
    </dependency>
    <dependency>
        <groupId>org.thymeleaf.extras</groupId>
        <artifactId>thymeleaf-extras-springsecurity5</artifactId>
    </dependency>

</dependencies>

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

我觉得有必要提前感谢你们,如果我错过了一些非常愚蠢的事情,我很抱歉,我真的希望我没有!

【问题讨论】:

请添加错误日志输出...。 嗨@khmarbaise,我在日志中没有收到错误消息。我可以运行应用程序而不会遇到任何问题。 【参考方案1】:

不确定您是如何创建项目的。我可以告诉您简单的解决方案,即转到 Spring Initializer ,链接为https://start.spring.io/

在那里您可以添加所有所需的依赖项,然后只需单击“生成”,它将下载您的项目。您可以将项目导入您的 IDE 并运行 maven 构建。我仅尝试使用 Spring boot 2.3.1 版本提到,它对我有用,应该对你有用。

另外,我建议你使用 Intellij IDE,它默认带有 maven 支持,所以它会让你很容易。你可以从这里下载 Intellij 免费版: https://www.jetbrains.com/idea/download/#section=windows

希望对你有所帮助。

【讨论】:

我支持这个 - 看起来你的 pom 文件中没有 spring boot 父级。无论如何,在start.spring.io 上配置您的项目是初学者避免此类问题的最可靠方法。 大家好,感谢您抽出宝贵时间帮助我。我使用 IntelliJ IDEA 创建了我的初始项目。它也有效,我使用 JPA 创建了一些表并制作了一些控制器来使用它们。无论如何我可以重做整个项目,但如果这种事情会重演,我可能会在那个时候更深入地进行项目,我真的很想以某种方式解决这个问题。 @AlexNaie,如果它对您有帮助,请您接受答案,以便对其他人也有帮助。谢谢。【参考方案2】:

我解决了这个问题。

长话短说,我的一个朋友建议用 Spring Initializer 做一个新项目,这次从头开始添加“Spring Boot Security”依赖项。之后,我只需要比较 pom 文件。唯一的区别是新项目有一个:

<scope>test</scope>

线。我将它添加到我的初始项目中,第一个依赖项不再出现错误。第二个依赖是 Thymeleaf spring security 一个,为了修复这个我添加了:

    <dependency>
        <groupId>org.thymeleaf.extras</groupId>
        <artifactId>thymeleaf-extras-java8time</artifactId>
    </dependency>

到我的 pom 文件。

这就是现在的依赖关系:

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-security</artifactId>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.thymeleaf.extras</groupId>
        <artifactId>thymeleaf-extras-java8time</artifactId>
    </dependency>
    <dependency>
        <groupId>org.thymeleaf.extras</groupId>
        <artifactId>thymeleaf-extras-springsecurity5</artifactId>
    </dependency>

就是这样,谢谢你们也提供的所有答案。

【讨论】:

【参考方案3】:

查看父 POM.xml 文件的版本。当我将版本更改为 2.0.0 时,我的项目找到了依赖项。

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

【讨论】:

以上是关于在简单的 Maven 项目中找不到依赖 spring-boot-starter-security的主要内容,如果未能解决你的问题,请参考以下文章

Gradle在本地Maven存储库中找不到现有的依赖项

Flyway 在 Maven 多模块项目中找不到迁移

Maven:包括在公共存储库中找不到的 jar

Maven 在 IntelliJ 中找不到依赖项

为啥我的 maven 模块在项目中找不到另一个模块? [复制]

解决项目中找不到Maven Dependencies