在为 Android 工件生成的 POM 中排除 Kotlin stdlib 的 testImplementation 依赖项

2023-11-29

鉴于旧的 Android 库已弃用,我正在将其从 jcenter 迁移到 mavenCentral。所有实际的库模块都是用 Java 编写的,但其中一些模块的测试是用 Kotlin 编写的。

在升级(到 AS 4.1.3、Gradle 6.8.3)之前,生成的 POM 从未包含对kotlin-stdlib。现在看来,应用kotlin-android插件会导致生成的 POM 添加它,即使依赖项包含为testImplementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.4.31".

  <dependencies>
    <dependency>
      <groupId>org.jetbrains.kotlin</groupId>
      <artifactId>kotlin-stdlib</artifactId>
      <version>1.4.31</version>
      <scope>compile</scope>
    </dependency>
  </dependencies>

问题:之前生成的 POM 是否错误,因为它应该包含 kotlin 作为编译依赖项,即使它仅用于测试?

或者,我是否需要做一些特殊的事情来排除这种特定情况下的“依赖性”?如果是这样,如果在定义发布时生成 POM,我如何排除它,例如:

afterEvaluate {
    publishing {
        publications {
            release(MavenPublication) {
                from components.release
                ....

                pom {
                    name = ...
                    licenses { }
                    developers { }
                    scm { }
                }
            }
        }
    }
}

或者,这不是一个好的选择,我应该用 Java 重写测试吗?

值得注意的是,删除kotlin-android插件还会将其作为编译依赖项从 POM 中删除。似乎对生成AAR没有影响;它只是阻止测试运行。


从 Kotlin 1.4 开始,各种 Kotlin Gradle 插件都会自动添加对 kotlin-std 的依赖。看对标准库的依赖.

您可以通过添加来禁用它gradle.properties:

kotlin.stdlib.default.dependency=false
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在为 Android 工件生成的 POM 中排除 Kotlin stdlib 的 testImplementation 依赖项 的相关文章

随机推荐

  • 可空对象必须有一个值#2

    我试图重用我一直使用的相同代码 但现在遇到错误 我正在循环访问各种用户表 并在其中执行以下操作 DateTime dcdt DateTime u DateCreated DateTime lldt DateTime u LastLogon
  • 如何使用js移动输入中的文本

    我只是使用 js 来设置文本输入的值 但是 当文本长度超过输入可容纳的长度时 多余的文本将隐藏在输入的右侧部分 如何像正常打字一样隐藏左侧区域多余的文字 原谅我糟糕的英语 当您执行此操作时 您的插入符位置位于文本的开头 您需要将插入符位置移
  • 使用 common lisp 展平列表

    我正在读 Paul Graham 写的 On Lisp 一书 在第 4 章 实用函数 中 他给出了对列表进行操作的小函数的示例 这在编写较大的程序时会很有帮助 其中之一是flatten 给定任意级别的嵌套列表作为参数 展平将删除所有嵌套元素
  • 改进 HoughLines 以进行水平线检测(Python、OpenCV)

    我有这个源图像 我的目标是删除底线 同时保持字母 数字不变 这是我使用的代码 import cv2 import numpy as np img cv2 imread src png gray cv2 cvtColor img cv2 CO
  • 在 Cassandra 中存储值列表

    版本相关 这个问题的一些答案涉及旧版本的 Cassandra 此类问题的正确答案取决于您使用的 Cassandra 版本 我有一个个人资料列族 想要在每个个人资料中存储技能列表 我不确定这在 Cassandra 中通常是如何完成的 一种选择
  • Python Glassdoor API

    我正在尝试使用 Python 从他们的 API 中获取 glassdoor 数据 import urllib2 id1 x key y action employers company company basepath http api g
  • 在 Flask 中,我在哪里定义 url_for() 使用的域?

    当我打电话时url for index 它会生成 但有时我希望它生成 domain tld 反而 我在文档中找不到指定这一点的位置 我只需要做吗 domain tld s url for index url for需要一个 external
  • 编译器正在创建额外的类文件,其中包含 $

    我正在使用 Eclipse 并使用 SWT 编写了一个 Java 应用程序 当 Eclipse 编译我的程序时 它将我的主文件重命名为 4 个不同的文件 如下所示 主文件 class 主文件 1 class 主文件 2 class 主文件
  • VBA - 将上传的 .csv 文件名放入特定工作表的单元格中

    我想知道是否有一种方法可以获取所选的 csv 文件并将名称放入 摘要 表上的单元格中 以下是上传 csv 文件的代码 Dim ws As Worksheet strFile As String Set ws ActiveWorkbook S
  • JavaScript 数组拼接与切片

    有什么区别splice and slice const array 1 2 3 4 5 array splice index 1 array slice index 1 splice 改变原始数组 而slice 不 但它们都返回数组对象 请
  • rm() 似乎没有清空我的 R 工作区

    我正在尝试清理我的 R 工作区 我在任何线程中发现的任何东西似乎都不起作用 我已经在谷歌上搜索并尝试了几个小时的解决方案 当我打开 R 并输入ls 控制台显示上一个会话中的所有代码 function name pos 1L envir as
  • 如何循环遍历字符串并打印某些项目?

    lst AB CD EF GH 输出 A B CD E F GH 这是我尝试过的 但它不起作用 while index lt len my string curr char my string index if curr char whil
  • 如何使用 Groovy 元编程重写 java 类型实例的方法?

    我试图在 Groovy 代码中重写 java 类型实例的方法的功能 但遇到了类转换异常 我看了张贴的指南here但我无法让它工作 由于我的实际问题有点混乱 下面是一些可运行的示例代码 但由于相同的错误而失败 在示例中 我想重写 java l
  • 范围内非重复随机查找算法

    我正在寻找一种有效的算法 可以生成一定范围内的随机值 而不重复 在伪代码中 在 Rand 类中 Rand long from long to this from from this to to long getNumber returns
  • 如何使用 Firebase 存储移动文件?

    有没有办法用 firebase storage 移动文件 例子 user1 public image jpg 到 user1 private image jpg 由于 Firebase Storage 由 Google Cloud Stor
  • Meteor 仅将授权模板发送给客户端

    我知道流星会编译模板给客户端 使用meteor auth系统 是否有一种方法仅在用户有权查看模板时才发送模板 因此在客户端检查html代码时它们不可见 例如 我们不想总是将管理部分发送到浏览器 例如 如果我有
  • 从 IE 中的下拉菜单中选择一个选项并触发一个函数

    所以 我是 VBA IE 自动化的新手 我会尝试非常具体地回答我的问题 最近 我一直在尝试登录一个网站 然后从下拉列表中选择一个月 我可以从下拉列表中选择一个选项 但是 当我单击搜索按钮时 显示的结果不是我使用 VBA 选择的值 而是网页上
  • C++ 中指针是否被视为无符号值?

    有符号溢出未定义 无符号溢出定义为模算术 所以我的问题是 以下是已定义还是未定义 include
  • LinkedIn 抄写员 OAuth 库无法允许访问 LinkedIn 帐户

    我正在编写一个概念验证应用程序 以使用以下方式连接到 LinkedInscribeOAuth 库 我可以获得请求令牌 但无法将其交换为访问令牌 我反复收到oauth problem permission unknown尽管我点击了 Link
  • 在为 Android 工件生成的 POM 中排除 Kotlin stdlib 的 testImplementation 依赖项

    鉴于旧的 Android 库已弃用 我正在将其从 jcenter 迁移到 mavenCentral 所有实际的库模块都是用 Java 编写的 但其中一些模块的测试是用 Kotlin 编写的 在升级 到 AS 4 1 3 Gradle 6 8