0

我是 Gradle 的新手。我已将我的项目设置为Gradle Project使用 Gradle 插件,以便基于 gradle 构建脚本重新构建项目配置。我正在尝试将我的应用程序设置为动态 Web 项目(使用eclipse-wtpGradle 插件),并且这样做,我需要我的项目能够访问 TomcatServer Runtime库。

显然,在 Gradle 中做到这一点的方法是将其设置为“提供的依赖项”,它应该只用于编译而不是部署。但是,这对我的 IDE Tomcat 部署不起作用。Gradle 似乎正在配置两组依赖项:Web App Libraries,它尊重提供的依赖设置,而Grade Dependencies,它不。 两者都包含在 Web 应用程序部署程序集中,这意味着“提供的”Tomcat jar 正在部署并阻止 Tomcat 启动。

如何配置 Gradle 以防止Gradle Dependencies自动包含在 Eclipse 部署程序集屏幕中?我无法手动删除它,因为它只会在 Gradle 下次运行时刷新。


我已经尝试过Remove Gradle Dependency Management(右键单击项目 -> Gradle -> 删除 Gradle 依赖管理),但这不起作用。它解决了 Tomcat 问题,但是我的测试依赖项不再位于构建路径上,这导致我的单元测试出现错误。

如果你也手动的话,上面的方法实际上是有效的Gradle -> Refresh All。这将导致 Gradle Eclipse 插件重新生成配置文件,并且不属于其中的依赖项Web App Libraries将包含在Referenced Libraries.

Gradle -> Remove Dependency Management只会删除Grade Dependencies库,本身并不够。


我在用:

这是导致问题的库,它包括“提供的”Tomcat jars:

Gradle 依赖项

这是我的 build.gradle 文件:

apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'war'
apply plugin: 'eclipse-wtp'
webAppDirName = 'WebContent'

// <snip>

dependencies {
    providedCompile('org.apache.tomcat:tomcat-catalina:7.0.34')

    // <snip>
}

// snip
4

1 回答 1

2

使用 WTP 项目的推荐方法是在禁用“依赖管理”的情况下导入它们。这是因为用于填充“Gradle Dependencies”容器的 Gradle 工具 API 不支持 WTP 项目。

如果您已经导入了项目,则可以禁用依赖项管理,如下所示:

右键单击项目并选择“Gradle >> 禁用依赖管理”。

由于缺少依赖项,您可能会在项目中看到错误。

右键单击项目并选择“Gradle >> Refresh All”。

这将执行“eclipse”任务并生成 eclipse 元数据(.classpath 文件等),其方式与从命令行执行此操作的方式大致相同。

如果这对您不起作用,还有另一种选择。您可以启用“依赖管理”,并且有一个全局排除过滤器可用于从部署程序集中删除“不需要的东西”。这确实不是一个很好的解决方案,但更多的是解决您遇到的问题的解决方法。

转到“Windows >> 首选项 >> Gradle >> WTP”。您可以在那里编辑正则表达式列表以从部署程序集中删除您的 tomcat 依赖项。

于 2015-11-23T17:19:09.827 回答