SBT是否支持自定义常春藤模块状态?

艾舍

在我的SBT构建中,我依赖于使用自定义模块状态的常春藤工件。这会在SBT中导致以下错误:

[error] (*:update) sbt.ResolveException: unresolved dependency: my-org#myapp-core_2.11;1.0: java.text.ParseException: inconsistent module descriptor file found in 'http://artifacts.myorg.com/libs-snapshots-local/myapp-core_2.11/1.0/myapp-ivy.xml': bad status: 'snapshot'; 

我可以通过告诉SBT使用外部常春藤设置来解决此问题,如下所示:

externalIvySettings(baseDirectory(_ / "ivySettings.xml"))

然后创建一个包含以下内容的ivySettings.xml:

<statuses default="release"> 
  <status name="release" integration="false"/> 
  <status name="snapshot" integration="false"/> 
</statuses>  

但是肯定有更好的方法吗?解决此问题的问题是,现在我所有的设置(例如解析器)也必须都放在ivy文件中,因为(IFAIK)使用externalIvySettings时它是全部或全部为零。

有没有一种方法可以在我的build.sbt中指定一组自定义状态?或者,有一种方法可以告诉sbt将外部ivy设置与其从build.sbt生成的设置结合起来。

由于在ivy中指定自定义模块状态是一件有效的事情,因此sbt也应该确实支持。

蔡德培

这是因为对于某些存储库,它们使用非标准状态,从而导致一致性检查失败。我们通过构建不进行一致性检查的自定义解析器解决了这一问题。您也可以使用相同的方法以自定义状态构造解析器。以下是工作片段。

  resolvers += {
  val resolver = new org.apache.ivy.plugins.resolver.IBiblioResolver
  resolver.setName("Custom Ivy Snapshots")
  resolver.setRoot("http://Custom/snapshots/")
  val settings = new org.apache.ivy.core.settings.IvySettings()
  settings.setVariable("ivy.local.default.ivy.pattern", Pattern)
  settings.setVariable("ivy.local.default.artifact.pattern", Pattern)
  resolver.setSettings(settings)
  resolver.setM2compatible(true)
  resolver.setCheckconsistency(false)
  new RawRepository(resolver)
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章