这是我有关gradle驱动的纯scala项目的小问题系列之一。 接下来的几天还会有更多的事情。编辑:由于对这个问题的理解不佳,我至少必须在发布它们之前对其进行重新整理。
几周前,我启动了一个新的私有scala项目,该项目希望通过gradle构建。 IDE在我的系统上往往有大量的启动时间,如果我只想做一些小的编辑,它们就无法扩展。所以我选择了gradle,因为我已经知道了(sbt也是我的选择)。如果确实需要更多工具集,但是大多数时候我只需要命令行,这也使我可以使用IDE。
我安装的最新版本是2.x版本(一段时间以来仍然运行良好),然后我迅速升级到了最新的5.x,并且-部分地测试了新的插件语法-最后几天我也看了6.0。由于我的构建脚本中存在编译依赖性,因此该最新版本向我发出了弃用警告。使用6.0版或多或少使构建时间增加了一倍,因此除非确实需要一些新功能,否则我不会使用它,但是在使用gradle 5.x时,即使(甚至更多)弃用警告仍然适用。 / p>
我认为没问题,因为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不应也没有一个 official 关于如何继续维护scala-project的意见?)还是没有共同的建议,我只能在这些选择之间进行选择,无论出于何种原因,这些选择都不是最优的:
谢谢。
答案 0 :(得分:0)
只需应用java-library
插件并使用api
。将插件视为Java platform 库插件,而不是Java language 库插件。
请注意,要完全发挥作用,至少需要使用Gradle 5.6,否则某些接线将不完整。