Gradle用于构建一个简单的Web应用程序,在同一个工作区内拆分成少数eclipse项目。 Gradle脚本运行测试/创建可部署的EAR文件就好了。 EAR文件在Liberty Profile服务器上运行时没有任何问题。
但是,我从eclipse(使用gradle插件)运行它时遇到问题。问题的根源似乎是自动“gradle depencency”管理(由“classpass容器”org.springsource.ide.eclipse.gradle.classpathcontainer注入的一堆依赖项)。这个东西好像接受了任何依赖,无论是compileOnly,testCompile,providedCompile等。这导致libs具有javax.persistence。,javax.inject这样的类,它们是独立构建所需要的,但是由应用程序服务器提供而不是从eclipse运行时需要,作为应用程序的一部分部署到应用服务器并导致各种错误/警告。
有没有办法过滤graclipse插件选择部署的依赖项?
答案 0 :(得分:1)
STS gradle工具是一个长期存在的问题。它源于gradle-tooling-api无法区分它为“eclipse类路径”生成的模型中的提供/测试等依赖关系。至少在实施STS gradle工具时就是这种情况。自那时起,tooling-api模型已经发展,但STS gradle工具正在逐步淘汰,这不太可能得到真正的修复。
话虽如此,有针对这种情况专门实施的解决方法。
转到Window >> Preferences >> Gradle (STS) >> WTP
。在那里,您将看到标记为Gradle Dependencies Deployment Exclusions
的正则表达式列表。您可以在那里添加更多表达式。这些作为一种全局过滤器。任何匹配其中一个表达式的jar都将从WTP部署程序集中排除。
这可能对你有用。
然而,这是一个粗略的解决方法。
所以......我听说BuildShip是STS Gradle-tooling的官方继任者has WTP support。所以也许你想尝试切换到BuildShip。我认为它正确处理提供的,测试等依赖关系w.r.t到WTP部署程序集(如果不是,你应该考虑提交针对BuildShip的错误报告)。