gpt4 book ai didi

scala - 正确替换编译依赖项

转载 作者:行者123 更新时间:2023-12-03 05:31:51 25 4
gpt4 key购买 nike

这是我有关gradle驱动的纯scala项目的系列小问题之一。接下来的几天还会有更多。编辑:鉴于对此问题的不满意,我至少必须在发布之前对其进行重新整理。

几周前,我开始了一个新的私有(private)scala项目,我想用gradle构建它。 IDE在我的系统上往往有大量的启动时间,如果我只想做一些小的编辑,它们就无法扩展。所以我选择了gradle,因为我已经知道了(sbt也是我的选择)。如果确实需要更多工具集,但大多数时候我只需要命令行,这也使我可以使用IDE。

我安装的最新版本是2.x版本(在一段时间内仍然运行良好),然后我迅速升级到了最新的5.x,并且-部分是为了测试新的插件语法-我最近的日子还看了6.0。由于我的构建脚本中存在编译依赖性,因此此最新版本向我发出了弃用警告。使用6.0版或多或少使构建时间增加了一倍,因此除非我真的需要一些新功能,否则我不会使用它,但是在使用gradle 5.x时,即使(甚至更多)弃用警告仍然适用。

我认为这没问题,因为gradle运行时已经建议如何修复它们。但是,用实现方式简单地替换编译无法实现,因为我在代码中使用了编译依赖项的可传递性。然后,我希望其他人也遇到同样的问题。并且有很多人提供了大量指南来解决这个问题。不幸的是,没有一个适用于纯scala项目。对于android来说,似乎是具有api依赖关系的明显解决方案。 Java项目可以通过具有api依赖项的java-library插件(也可能是上述android项目解决方案的基础)使用。但是对于scala,这是没有办法的,或者至少我没有找到它。

因此,需要明确的是:我在这里有一个多项目设置,而我只为与其他子项目的依赖而苦苦挣扎。不依赖于外部资源。替换运行时(对于外部库)和testCompile依赖项根本没有问题。

所以,这是我的问题:是否有适当/规范的方法替换纯标量项目中的编译依赖项? (虽然几个小时前我对自己的评论中的“正式”一词不满意,但这种观点又如何呢:无论最初由谁创建了scala插件(scala-team,scala-community,gradle-team,或gradle-community),则gradle-team当时决定将其包含在其分发中,而现在gradle-team决定标记已弃用的编译依赖项。gradle-team也不应该对此有一个官方意见。继续维护scala-projects?)还是没有共同的建议,我留在这些选择之间进行选择,无论出于何种原因,这些选择都不是最优的:

  • 坚持使用编译依赖项。从长远来看,绝对是,而不是面向 future 的
  • 展开所有可传递依赖项,并添加新的(技术上不必要的)依赖项。如果A依赖于B,而B依赖于C(并且A实际上使用了C的定义),那么也将A依赖关系添加到C。 膨胀依赖关系图并构建脚本
  • 尽管我管理scala项目只是为了具有api依赖性,但仍将java-library应用于非应用程序项目。 java-library和scala都扩展了Java插件,所以我希望这里没有真正的危害。尽管我不确定是否为单个依赖项类型添加一个全新的插件是否是正确的选择,但这可能是最好的解决方案。 向'scala'项目添加任何'java'东西似乎是奇怪的
  • 以某种方式重新发明轮子,并定义我自己的api依赖关系。鉴于我不得不从gradle存储库中复制一些代码到我自己的项目中,这似乎是最丑陋的方式。那就是插件的用途,不是吗。

  • 提前致谢。

    最佳答案

    只需应用java-library插件并使用api即可。将插件视为Java平台库插件,而不是Java语言库插件。

    请注意,要完全发挥作用,至少需要使用Gradle 5.6,否则某些接线将不完整。

    关于scala - 正确替换编译依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58935940/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com