如何在 Eclipse WTP 项目中使用 Gradle 依赖管理而不出错?
How can I use Gradle dependency managemenent with an Eclipse WTP project without errors?
我是 Gradle 的新手。我已使用 Gradle 插件将我的项目设置为 Gradle Project
,以便根据 gradle 构建脚本重建项目配置。我正在尝试将我的应用程序设置为动态 Web 项目(使用 eclipse-wtp
Gradle 插件),这样做,我需要我的项目可以访问 Tomcat Server Runtime
图书馆。
显然,在 Gradle 中执行此操作的方法是将其设置为 "provided dependency,",它应该仅用于编译而不用于部署。但是,这对我的 IDE Tomcat 部署不起作用。看起来 Gradle 正在配置两组依赖项:Web App Libraries
,它遵守提供的依赖项设置,而 Grade Dependencies
,它不遵守。 两者 都包含在 Web 应用程序部署程序集中,这意味着 "provided" 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
库,它本身是不够的。
我正在使用:
- Eclipse Luna SR1a (4.4.1)
- Gradle IDE 插件 3.7.0 (https://marketplace.eclipse.org/content/gradle-integration-eclipse-0)
这是导致问题的库,它包括 "provided" Tomcat 罐子:
这是我的 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
使用 WTP 项目的推荐方法是在禁用 'dependency management' 的情况下导入它们。这是因为 Gradle 用于填充 'Gradle Dependencies' 容器的工具 API 不支持 WTP 项目。
如果您已经导入了项目,您可以按如下方式禁用依赖管理:
右键单击项目并 select "Gradle >> Disable Dependency Management"。
由于缺少依赖项,您可能会在项目中看到错误。
右键单击项目并 select "Gradle >> Refresh All"。
这将执行 'eclipse' 任务并生成 eclipse 元数据(.classpath 文件等),其方式与从命令行执行此操作的方式大致相同。
如果这对您不起作用,还有另一种选择。您可以使 'Dependency managent' 处于启用状态,并且有一个全局排除过滤器可用于从部署程序集中删除 'unwanted stuff'。这确实不是一个很好的解决方案,但更多的是针对您所遇到的问题的解决方法。
前往 "Windows >> Preferences >> Gradle >> WTP"。您可以在那里编辑正则表达式列表,以从部署程序集中删除 tomcat 依赖项。
我是 Gradle 的新手。我已使用 Gradle 插件将我的项目设置为 Gradle Project
,以便根据 gradle 构建脚本重建项目配置。我正在尝试将我的应用程序设置为动态 Web 项目(使用 eclipse-wtp
Gradle 插件),这样做,我需要我的项目可以访问 Tomcat Server Runtime
图书馆。
显然,在 Gradle 中执行此操作的方法是将其设置为 "provided dependency,",它应该仅用于编译而不用于部署。但是,这对我的 IDE Tomcat 部署不起作用。看起来 Gradle 正在配置两组依赖项:Web App Libraries
,它遵守提供的依赖项设置,而 Grade Dependencies
,它不遵守。 两者 都包含在 Web 应用程序部署程序集中,这意味着 "provided" 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
库,它本身是不够的。
我正在使用:
- Eclipse Luna SR1a (4.4.1)
- Gradle IDE 插件 3.7.0 (https://marketplace.eclipse.org/content/gradle-integration-eclipse-0)
这是导致问题的库,它包括 "provided" Tomcat 罐子:
这是我的 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
使用 WTP 项目的推荐方法是在禁用 'dependency management' 的情况下导入它们。这是因为 Gradle 用于填充 'Gradle Dependencies' 容器的工具 API 不支持 WTP 项目。
如果您已经导入了项目,您可以按如下方式禁用依赖管理:
右键单击项目并 select "Gradle >> Disable Dependency Management"。
由于缺少依赖项,您可能会在项目中看到错误。
右键单击项目并 select "Gradle >> Refresh All"。
这将执行 'eclipse' 任务并生成 eclipse 元数据(.classpath 文件等),其方式与从命令行执行此操作的方式大致相同。
如果这对您不起作用,还有另一种选择。您可以使 'Dependency managent' 处于启用状态,并且有一个全局排除过滤器可用于从部署程序集中删除 'unwanted stuff'。这确实不是一个很好的解决方案,但更多的是针对您所遇到的问题的解决方法。
前往 "Windows >> Preferences >> Gradle >> WTP"。您可以在那里编辑正则表达式列表,以从部署程序集中删除 tomcat 依赖项。