【问题标题】:Maven compile does not work with provided scopeMaven 编译不适用于提供的范围
【发布时间】:2021-08-25 09:15:24
【问题描述】:

我在我的项目中使用以下依赖项,但无法编译:

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
        <version>2.1.0.RELEASE</version>
        <scope>provided</scope>
    </dependency>

我的项目是一个库,它将被另一个项目使用,它将提供 Spring Boot Web,因此我将其标记为已提供。

如果我更改范围以进行编译,它可以正常工作,但是我不想将此依赖项打包到我的 jar 中,因此我尝试使用提供的范围,但它不会让我编译。

我发现的另一种解决方法是使用 &lt;optional&gt;true&lt;/optional&gt;,但在 Maven 的文档中,它被称为权宜之计。

请告知如何使用提供的范围进行编译。

【问题讨论】:

  • 您能否更具体地说明“不起作用”的真正含义?
  • 当然。当我使用提供的范围而不是默认(编译)范围时出现编译错误。
  • 究竟是什么问题?请提供更多信息,否则没有人可以在这里提供帮助...
  • @khmarbaise,我能够解决这个问题。还有另一个依赖项导致与提供的范围发生冲突。在使用 dependency:tree 查看依赖项时,这一点变得清晰起来。谢谢。

标签: maven scope compilation dependencies


【解决方案1】:

Maven 提供的范围工作正常,如文档中所述。出现此问题的原因是其他一些导致冲突的依赖项。由于我无法删除这些,我使用 optional=true 作为解决方法。

【讨论】:

  • 请添加更多详细信息以扩展您的答案,例如工作代码或文档引用。
猜你喜欢
  • 2015-06-05
  • 2017-06-01
  • 2011-05-31
  • 2011-10-02
  • 1970-01-01
  • 2016-05-28
  • 2015-04-12
  • 2011-03-24
相关资源
最近更新 更多