为什么部署 providedCompile 依赖项?

Why providedCompile dependency gets deployed?

在我的 build.gradle 我有

dependencies {
    ...
    providedCompile 'javax:javaee-web-api:7.0'
}

我在 Eclipse Mars 4.5.0 中导入了项目(我还安装了 Gradle IDE 3.7.0.201506251228-RELEASE)。 Gradle dependencies 包含库,而 Web App Libraries 不包含。到目前为止一切都很好。但是为什么这个库被部署到 WEB-INF/lib?

这是一个known issue的工具。这个问题的原因是 Gradle 的工具 API 没有为 IDE 提供足够的信息来区分所提供的与其他依赖项。因此 IDE 无法正确配置部署程序集。

该问题有一个解决方法(如错误报告中所述):可以定义一个全局正则表达式列表以从部署中排除特定依赖项。转到 "Gradle >> WTP" 首选项找到它。

或者,您可以禁用 'Dependency Management' 并尝试依赖 Gradle 的 eclipse 插件(即 "apply plugin: 'eclipse-wtp'")来生成类路径和部署程序集。这可能会更好。

通常,在使用基于 wtp 的项目时,最好使用禁用依赖管理的设置,正是因为这些错误。