sbt - 仅在发布期间排除某些依赖项

2023-12-21

我正在构建一个实用程序库,可以与 Apache Spark 1.0、1.1、1.2 版本之一一起使用。

由于它们都是二进制向后兼容的,我想让用户决定使用哪个 Spark 版本(通过手动添加spark-core将首选版本作为我的库的依赖项),并且不在库的 POM 中施加任何版本限制。否则,它会通过依赖项驱逐警告来惹恼用户。

是否可以使 sbt 在发布的 POM 中省略库依赖项,同时不更改任何编译行为?


以下是我使用 sjrd 的帮助编写的 sbt 设置。

import scala.xml.{Node => XmlNode, NodeSeq => XmlNodeSeq, _}
import scala.xml.transform.{RewriteRule, RuleTransformer}

pomPostProcess := { (node: XmlNode) =>
  new RuleTransformer(new RewriteRule {
    override def transform(node: XmlNode): XmlNodeSeq = node match {
      case e: Elem if e.label == "dependency" && e.child.exists(child => child.label == "scope" && child.text == "provided") =>
        val organization = e.child.filter(_.label == "groupId").flatMap(_.text).mkString
        val artifact = e.child.filter(_.label == "artifactId").flatMap(_.text).mkString
        val version = e.child.filter(_.label == "version").flatMap(_.text).mkString
        Comment(s"provided dependency $organization#$artifact;$version has been omitted")
      case _ => node
    }
  }).transform(node).head
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

sbt - 仅在发布期间排除某些依赖项 的相关文章

随机推荐

  • 如何找到检测到的霍夫线的角度?

    我的目标是使用开放CV 检测骨折的骨头 我尝试了以下代码 并获得了正确的精明检测边缘 还找到了粗糙线 但现在我的工作是检测图像中的断裂点 我不明白如何进一步进行 在一些博客中 我发现我们可以确定粗糙线的角度来检测该线是否是直的 但不知道如何
  • 如何从 Twitter Bootstrap 中删除未使用的样式?

    我的引导样式表大小约为 120kb 但我只使用了 25 的样式表代码 我不想要那个 span 类 我通过在引导程序中自定义它来尝试它自定义页面 http twitter github com bootstrap customize html
  • 使用Dataadapter更新时出现DBConcurrency异常

    我正在尝试编辑DataTable填充者NpgsqlDataAdapter 打电话后Fill 方法 我只有一行DataTable 然后我只更改了一列的值并尝试更新如下 然后我收到这个错误 发生 DBConcurrencyException 我
  • 使用实体框架时为 Select() 创建通用选择器

    我想创建一个函数来检索给定属性名称的类型的列表 但我还不知道如何创建一个有效的 lambda 选择器 public IList GetDistinctListOfProperty string propertyName var propIn
  • 如何渲染祖先树视图的嵌套 ul 列表

    我想使用 content tag 渲染如下所示的结构 其中集合是祖先对象 ul li a Fruits a ul li a Apple a li li a Orange a li ul li li a Colours a li ul 我相信
  • 带有 Spring 的 JDBC 缓慢元数据获取 Oracle

    我正在使用春天JdbcUtils extractDatabaseMetaData 方法来分析数据库 该函数调用回调并移交DatabaseMetaData目的 该对象提供了getColumns String catalog String sc
  • server.xml 中的环境/系统变量

    如何在 tomcat server xml context xml 等配置文件中使用环境 系统变量 我尝试使用 ENV VAR NAME 环境变量和系统变量 env ENV VAR NAME 对于环境变量 似乎什么都不起作用 它是如何在我的
  • 通过代码使用锚预设定位 UI 元素

    当我们在 Unity 中定位 UI 元素时 我们会通过锚点预设来修复位置 以便将其位置正确放置在画布上 我们选择顶部 中间 底部 拉伸和蓝色点 如果我在 C 代码中创建 UI 元素 我该如何做同样的事情 I make Texture2D t
  • 将基于“sh 1.11”的代码移植到 Windows

    所有迹象似乎都表明我的脚本可以在 Linux 环境中完全运行 据我所知 唯一阻止它在 Windows 中运行的是我使用sh https pypi python org pypi sh 这非常简单 from sh import convert
  • Swift:AnyObject 转换为 Float 失败

    let json left 18 deadline May 10 progress 0 6 as String AnyObject let ss json progress as Float let sss json progress as
  • 访问子类父类中重写的类变量

    如何访问我希望子类替换的类变量 这就是我想要实现的目标 class Foo var Foo staticmethod def print var print Foo var class Bar Foo var Bar gt gt Bar p
  • Neo4django 关系属性

    因此 我尝试使用 Django 在 Neo4j 中建模小型用户组关系 我目前正在使用 Neo4django python 包here https github com scholrly neo4django 现在 我有代表我的用户的节点 代
  • Runspace 忽略自定义 PSHostUserInterface

    的背景 我正在编写一个以编程方式执行 PowerShell 脚本的应用程序 该应用程序有一个自定义PSHost实现允许脚本输出日志记录语句 目前 我看到的行为是some请求已正确转发给我的自定义PSHost而其他人则完全被忽视 当我开始检查
  • 路由错误 - 没有新的路由与 [POST] 匹配

    我遇到了路由错误 并且找不到问题出在哪里 我正在创建一个简单的 CRUD 并通过 create 方法遇到此问题 Error 没有路由匹配 POST usuarios new 控制器 def new usuario Usuarios new
  • Javascript 在一定时间后关闭弹出窗口

    嗨 首先我不懂 JavaScript 因此 我的主页上有一个弹出窗口 其中包含对客户的圣诞祝福 我希望弹出窗口在 20 秒后关闭 我从互联网上获得了以下代码 弹出窗口可以正常打开 但我需要以下方面的帮助 我在哪里输入弹出窗口的时间限制和 我
  • CRONTAB 语法错误

    这是我的 CRONTAB 文件 Ubuntu 10 10 57 1 2 6 ET date date yesterday Y m d echo ET 甚至语法颜色也表明有问题 并且有这个错误 Subject Cron
  • VS Code 有没有办法缩进到左括号?

    我希望修改 VS Code 的缩进行为 这样如果我在输入如下行后按 Enter 键 variable function param1 它将缩进到左括号的水平 以便我可以轻松地格式化代码 如下所示 variable function para
  • 如何在 Aurelia 中设置复选框绑定

    我有一个复选框列表 当用户选中其中一个复选框时 会在 js 文件中调用一个函数 然后调用一个方法 dataservice js 来调用 webapi 控制器 这一切都工作正常并返回正确的数据 当该过程完成时 会发生的情况是触发序列的复选框未
  • 存储指向 std::string 数据的指针是否安全?

    我的问题围绕复制构造和重新分配的机制 我有一堂课 收集字符串 将字符串添加到集合后 该字符串将被复制并存储在向量中 但因为我还需要访问所有字符串的集合const char const 我还通过以下方式存储指向每个字符串数据的指针 c str
  • sbt - 仅在发布期间排除某些依赖项

    我正在构建一个实用程序库 可以与 Apache Spark 1 0 1 1 1 2 版本之一一起使用 由于它们都是二进制向后兼容的 我想让用户决定使用哪个 Spark 版本 通过手动添加spark core将首选版本作为我的库的依赖项 并且