【问题标题】:Why is the Guava library included with Vaadin 14 not appearing on my project's classpath?为什么 Vaadin 14 中包含的 Guava 库没有出现在我的项目的类路径中?
【发布时间】:2019-10-25 21:21:48
【问题描述】:

Vaadin 14.1.0alpha4 通过其 Maven 配置自动包含 Google Guava 版本 25 库。请参阅下面的屏幕截图,列在左侧。

然而,在我自己的代码中,当引用 Google Guava 中的类时,IntelliJ 将其标记为编译器错误。 IntelliJ 提供“将库 Guava 添加到类路径”。在下面的屏幕截图中,可以看到右侧的两个橙色箭头。

➥ 为什么 Guava 被列为我的 Vaadin 14 项目中列出的下载库,而 classpath 上却没有?为什么我的代码无法使用 Guava?

【问题讨论】:

  • 您能否将 POM 的(相关部分)添加到您的问题中?
  • @JFMeier 不,很遗憾,我无法显示 POM 的相关部分。我自己的 POM 调用了 Vaadin 提供的其他神秘配置(更多 POM 文件?)。所以我从未见过那部分。我不是 Maven 专家。
  • 通常,建议将您在源代码中使用的所有依赖项直接添加到您的 POM 中,而不是依赖传递解析。但是,在选择“正确”版本时必须小心,因为类路径只能具有一个版本的依赖项,如果添加不兼容的版本,则可能会破坏其他部分。

标签: java maven vaadin classpath vaadin-flow


【解决方案1】:

empty project default 似乎只在测试范围内包含该依赖项:

mvn dependency:tree | grep "guava"

[INFO]    |  |  +- com.google.guava:guava:jar:25.0-jre:test

maven 面板更精确地确定了哪些依赖项在什么范围和什么模块中可用:

【讨论】:

  • 我可以在我自己的 POM 中简单地为 Guava 添加一个依赖项,而不会干扰或与 Vaadin 发生冲突吗?我的依赖可以使用更新版本的 Guava 吗?
  • @BasilBourque 是的,因为您没有将测试台(或一般测试)与您的应用程序一起分发。但是有一个奇怪的机会,你的功能测试可能会受到干扰。
  • 这总是有点尝试和错误的事情。是的,您可以简单地将该依赖项添加到您自己的 pom.xml 中。 maven 将使用“最短路径”方法解决。所以传递依赖被替换了。如果您使用较新版本的其他功能取决于番石榴的向后兼容性。我认为不可能有更大的跳跃。因为它默认是测试范围,你可能不会使用那些你可以跳转版本的测试功能。您需要自己管理依赖项。还与maven。所以在选择时:比后悔更安全:)
猜你喜欢
  • 1970-01-01
  • 2022-01-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-16
  • 2011-07-01
  • 2021-05-08
相关资源
最近更新 更多