Scala 正确替换编译依赖项
这是我关于gradle驱动的纯scala项目的小问题系列的第一部分。接下来几天会有更多。编辑:考虑到我对这个问题的不好理解,我至少要在发布之前对它们进行修改 几周前,我开始了一个新的私人scala项目,我想与gradle一起构建这个项目。IDE往往在我的系统上有大量的启动时间,如果我只想做一些小的编辑,就无法扩展。所以我选择了gradle,因为我已经知道了(sbt也是我的一个选择)。这也让我可以使用IDE,以防我真的需要一套更大的工具,但大多数时候我只需要一个命令行 我安装的最新版本是一些2.x版本(在一段时间内仍然运行良好),然后我迅速升级到更新的5.x版本,部分是为了测试新的插件语法,最后几天我还查看了6.0。由于生成脚本中的编译依赖关系,此最新版本向我发出了弃用警告。使用版本6.0或多或少使我的构建时间增加了一倍,所以除非我真的需要一些新功能,否则我不会使用它,但在使用gradle 5.x时,弃用警告仍然适用(即使不是更多) 没问题,我想,因为gradle运行时已经建议了如何修复它们。但是,用实现简单地替换compile是行不通的,因为我(ab-)在代码中使用了编译依赖项的传递性。然后我希望其他人也有同样的问题。他们中有很多人提供了大量的指南来解决这个问题。不幸的是,它们都不适用于纯scala项目。对于android,似乎是一个具有api依赖性的明显解决方案。Java项目可以利用Java库插件(这可能也是上述android项目解决方案的基础)和api依赖性。但是对于scala来说没有这样的方法,或者至少我还没有找到 因此,需要明确的是:我在这里有一个多项目的设置,我只与其他子项目的依赖性作斗争。不依赖于外部源。替换运行时(对于外部libs)和testCompile依赖项根本没有问题 所以,我的问题是:在纯scala项目中有没有合适的/规范的方法来替换编译依赖项?(虽然我对几个小时前在自己的评论中使用“官方”并不特别满意,但这一观点如何:不管谁最初创建了scala插件(scala团队、scala社区、gradle团队或gradle社区),gradle团队当时决定将其包含在发行版中,现在gradle团队决定将编译依赖项标记为已弃用。那么gradle团队是否也应该对如何继续维护scala项目有一个官方的意见呢?)或者没有共同的建议,我只能在这些选项中选择,无论出于何种原因,这些选项都不是最优的:Scala 正确替换编译依赖项,scala,gradle,Scala,Gradle,这是我关于gradle驱动的纯scala项目的小问题系列的第一部分。接下来几天会有更多。编辑:考虑到我对这个问题的不好理解,我至少要在发布之前对它们进行修改 几周前,我开始了一个新的私人scala项目,我想与gradle一起构建这个项目。IDE往往在我的系统上有大量的启动时间,如果我只想做一些小的编辑,就无法扩展。所以我选择了gradle,因为我已经知道了(sbt也是我的一个选择)。这也让我可以使用IDE,以防我真的需要一套更大的工具,但大多数时候我只需要一个命令行 我安装的最新版本是一些2.x
提前感谢。只需应用
java库
插件并使用api
。将该插件视为Java平台库插件,而不是Java语言库插件
请注意,要充分发挥功能,您至少需要Gradle 5.6,否则某些接线不完整。请参阅为什么此类主观问题不合适。我承认,我以前没有阅读过此特定指南,但您能否详细说明,为什么您认为这是主观的?当然,我提出了一些建议,但只是为了帮助其他人理解我已经考虑到了什么。这不是一个选择题测验,我不想看到哪个答案给出的最多。我的问题必须有正式的答案/解决办法,不是吗?这就是我想要的答案。这里的问题是什么?所有这些都是非常主观的,因为这些选择取决于您在
.gradle
文件中所做的选择。Gradle允许如此高的灵活性,以至于大多数真实世界的Gradle项目都不可能做出客观的陈述。对于同一个问题,对你的gradle构建有效的东西对于另一个gradle构建可能不起作用(甚至被认为是荒谬的)。更重要的是,我不喜欢提供的每一个“选项”(至少部分),并且我清楚地说明了每一个选项的原因。所以我特别想寻找一些完全不同的方法。或者有证据表明,没有这样“合适”的解决方案,gradle对待scala程序员不像android开发者那样受欢迎。gradle没有让任何开发者感到受欢迎。android插件(和指南)是由android开发者和谷歌开发的。因此,如果Scala开发者社区选择,他们可以花2-3年时间创建插件和指南生态系统。这正是安卓社区所做的。。。这并不容易,2013-2014年,android+gradle曾经是一个脆弱的拼图,经过多年的改进,它变得同样好。这是我所期待的,