gradle eclipse依赖项,跳过testCompile/providedRuntime等



Gradle用于构建一个简单的web应用程序,在同一个工作区中拆分为几个eclipse项目。Gradle脚本运行测试/创建可部署的EAR文件很好。EAR文件在Liberty Profile服务器上运行没有任何问题。

然而,我有问题运行它从eclipse(与gradle插件)。问题的根源似乎是自动的"gradle依赖"管理(一堆依赖被"classpass容器"注入org.springsource.ide.eclipse.gradle.classpathcontainer)。这个东西似乎捡起任何依赖,无论是compileOnly, testCompile,提供编译等。这就产生了带有javax.persistence等类的库。、javax。注入独立构建时需要的,但由应用服务器提供的,从eclipse运行时不需要的,作为应用程序的一部分部署到应用服务器,并导致各种错误/警告。

是否有一种方法来过滤gradle eclipse插件为部署挑选的依赖关系?

这是STS gradle工具长期存在的问题。它源于gradle-tool -api不区分它为"eclipse类路径"生成的模型中的提供/测试等依赖项。至少在实现STS gradle工具时是这样的。从那时起,工具-api模型已经发展,但STS gradle工具正在逐步淘汰,这不太可能得到真正的修复。

话虽这么说,有一个解决方案是专门为这种情况实现的。

转到Window >> Preferences >> Gradle (STS) >> WTP。在这里,您将看到一个标记为Gradle Dependencies Deployment Exclusions的正则表达式列表。你可以在这里添加更多的表达式。它们就像一种全局过滤器。任何匹配这些表达式之一的jar都将被排除在WTP部署程序集中。

这可能对你有用。

然而,这是一个有点粗糙的解决方案。

所以…我听说BuildShip是STS gradle - tools的官方继承者,现在支持WTP了。所以也许你想尝试切换到BuildShip。我认为它可以正确地处理提供的,测试等依赖关系,而不是WTP部署程序集(如果不是,你应该考虑向BuildShip提交错误报告)。

相关内容

  • 没有找到相关文章

最新更新