scala – 传递代替Ivy模块
发布时间:2020-12-16 18:28:51 所属栏目:安全 来源:网络整理
导读:我以编程方式使用Ivy(在SBT的上下文中),我需要 能够用一个传递方式替换一小组模块 兼容集,具有不同的组织,但共享 工件名称,修订等 举一个具体的例子,我想替换, org.scala-lang#scala-reflect;2.11.8 用, org.typelevel#scala-reflect;2.11.8 依赖图中的任何
我以编程方式使用Ivy(在SBT的上下文中),我需要
能够用一个传递方式替换一小组模块 兼容集,具有不同的组织,但共享 工件名称,修订等 举一个具体的例子,我想替换, org.scala-lang#scala-reflect;2.11.8 用, org.typelevel#scala-reflect;2.11.8 依赖图中的任何地方.请注意,我只想添加一个 这可能吗?如果是,指向必要机制的指针就是 解决方法
虽然这不是最干净的解决方案,但我认为您可以通过劫持项目解析器(负责解决SBT中的项目间依赖关系)来实现这一目标.
在您的构建文件中的某个位置: // ... .settings( projectResolver <<= (projectDescriptors,streams) map { (m,s) => new RawRepository(new ProjectResolver("custom-resolver",m) { import org.apache.ivy.core.module.descriptor.DependencyDescriptor import org.apache.ivy.core.resolve.ResolveData import org.apache.ivy.core.resolve.ResolvedModuleRevision override def getDependency(dd: DependencyDescriptor,data: ResolveData): ResolvedModuleRevision = { s.log.info("Resolving " + dd.getDependencyId.getName) // adjust your dependency descriptor and possibly resolve // from another source? super.getDependency(dd,data) } }) } ) 这个新项目解析器可以调整某些依赖描述符,然后针对常规解析器链解决它们……我想.您可能必须覆盖一些其他方法. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |