也有人问过类似的问题,但他们的答案并不令人满意。它归结为:当主要(但不完全)使用 SBT 和 Scala 时,选择 Maven、Ivy 或 SBT 作为存储库的最佳实践和后果是什么?作为背景,Maven 是唯一一个看起来可以正常工作的。当 SBT 使用 Maven 样式(带有publishMavenStyle := true
)发布工件时,Artifactory 能够正确识别模块 ID。并提供有关如何将工件作为依赖项添加到各种构建系统的说明。当然,它不考虑模块名称中的 Scala 版本(即,它不推荐使用 SBT 的%%
用于针对 Scala 构建的工件的运算符),并且当启用一致性检查(这显然是可取的)时,它禁止发布 SBT 插件(带有 409 错误)。在后一种情况下——对于 Ivy 和 SBT——布局模式是相似的,根据 SBT 的文档,这些模式甚至可以互换,其中 Ivy 代理配置了与sbt-default
Artifactory 中布局指定的相同模式。但是,SBT 在此处发布的工件(与publishMavenStyle := false
) 似乎没有被 Artifactory 正确识别(与前面提到的相反,模块 ID。始终为“N/A”并且没有出现构建工具说明)导致我假设它们没有经过一致性检查或正确索引。当然,SBT 本身甚至无法使用规定的 Ivy 或 SBT 模式发布工件,这无济于事。最终,考虑到长期影响以及工具(SBT 和 Artifactory)似乎无法按我预期的那样工作,我犹豫是否要就我的存储库设置做出决定。