我遇到了几个与SBT相关的案例让我感到难过.有没有办法告诉SBT在您进行交叉编译时完全跳过某个子项目?
以下是两个有用的例子.
1)具有三个项目A,B和C的构建.A和B都是scala项目,并且在其设置中具有'scalaVersions ++ = Seq("2.11.2","2.10.4").Project C是一个纯Java工件,因此我从它的依赖项中排除了Scala库.我希望A和B依赖于C,但理想情况下我只想建立一次C.如果我使用默认行为并从根聚合器项目执行"+发布",我会生成两个C-1.0.0.jar副本,并且SBT尝试将其发布两次,这当然是禁止的. maven存储库.
2)具有多个scala项目的构建,但是一个项目应该仅针对单个Scala版本构建.我已经尝试在这个项目的设置中定义'scalaVersions'只保留一个版本,其他项目有两个,但是从根聚合器再次"+发布"似乎忽略了这个并且仍然编译两次,第二次失败,因为它的依赖关系不适用于该Scala版本.这个项目是依赖图中的一个叶子节点,所以想要逻辑地做这件事是件好事.
对于情况#2,我已经考虑将'坏'scala版本的源dirs设置为/ dev/null或类似的东西,但实际上仍然运行构建并产生一个空的工件.我知道我可能会进去找到所有相关的键并做类似的事情
publishArtifact := if(scalaBinaryVersion.value == "2.10") false else publishArtifact.value
Run Code Online (Sandbox Code Playgroud)
然后搜索所有其他相关的设置/任务(编译,在Test中编译,在Test中测试,packageBin等)但这看起来很糟糕.某处有"跳过"设置吗?
| 归档时间: |
|
| 查看次数: |
1111 次 |
| 最近记录: |