使用Gradle交叉构建Scala



我有一个使用gradle构建的Scala项目。Scala代码与Scala 2.9和2.10兼容,我想将其交叉到两个主要的Scala版本中。gradle支持这个吗?

例如,我的gradle项目将有一个模块:

    build.gradle
    src/main/scala/foo.scala

我希望由此产生的发布的罐子为:

    org-foo_2.9-0.1.jar (with dependency on scala-library 2.9)
    org-foo_2.10-0.1.jar (with dependency on scala-library 2.10)

Gradle的Scala插件当前不支持交叉构建。不过,可以自己实施。在我的polyglot gradle演讲中,我提出了概念验证。

我正在寻找一个很好的例子。Gradle手册没有提及如何指定Scala版本,而是查看Scala插件的源代码,它似乎是从您指定的Scala库JAR推断出来的。

我能找到的最好的例子是Apache Kafka构建系统。它指定了Scala版本,然后使用一些其他逻辑来解决Scala库的正确版本。它还使用一些逻辑将正确的标签连接到其构建的罐子上,以对应正确的Scala版本。

这感觉像是很多工作,并且在SBT中为您喜欢的构建系统应该为您做的事情。

最新更新