问题标签 [coursier]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
scala - 由于 java.lang.NoSuchMethodError,sbt 无法编译 Scala 项目
我是 Scala 的新手,所以任何帮助都将不胜感激。
我正在使用 IntelliJ IDEA 版本:2020.1、sbt.version=1.2.8、jdk1.8.0_251 和 Scala 2.12.8。
当我尝试编译 coursera 项目时,出现以下错误
这是 plugins.sbt 中的 sbt coursier 插件
scala - sbt 依赖忽略版本
在我的 build.sbt 文件中,我声明我想使用库中的 18.9 版:
但是当我运行 sbt 时,这似乎被忽略了
它输出编译时使用的所有jar。在那里我看到,对于包括核心在内的每个 finagle 依赖项,都使用了 19.3 版本:
最新版本的“偏好”来自哪里?
scala - SBT 是否支持下载包的抢先验证?
我正在运行 SBT 1.2.8,我的项目需要从私有托管的 Artifactory 实例上的 repo 下载包。我的仓库受基本身份验证保护。在阅读了大量示例和说明后,我credentials.properties
在我的仓库中创建了一个文件。
然后我将以下内容添加到我的build.sbt
文件中
然后我将存储库添加到我的解析器列表中resolvers.sbt
我构建了我的应用程序,并且能够很好地下载受保护的包。
但是,我公司的系统管理员要求我在 Artifactory 中打开“隐藏未授权资源的存在”设置。当未经身份验证的用户尝试访问受保护的资源时,此设置强制 Artifactory 返回 404 错误。通常在这种情况下,Artifactory 会返回带有WWW-Authenticate
标头的 401。
突然,我的应用程序无法解决其依赖关系。我关闭了 Artifactory 设置,然后再次打开,并验证此设置实际上是我的问题的原因。
似乎 SBT 不会发送凭据,除非它受到 401 和WWW-Authenticate
标头(具有正确的领域)的挑战。查看 SBT、Ivy 和 Coursier 的文档和 GitHub 问题,似乎这种“抢先式身份验证”不是受支持的功能。
我花了很多时间试图以各种方式解决这个问题,但我找不到解决方案。这是我尝试过的:
- 将我的 Artifactory 用户名和密码添加到存储库 url,看起来像
https://my_username:my_password@artifactory.mycompany.com/artifactory/my_private_repo/
. 这适用于我的浏览器和 REST 客户端,但不适用于 SBT。 - 从我的凭证文件中省略“领域”
- 切换到 SBT 1.3.9 并使用新版本尝试上述所有内容。
有谁知道我如何让 SBT 使用抢先式 HTTP 基本身份验证?Maven 和 Gradle 似乎都支持这一点(见下面的链接),但我在 SBT 文档中找不到任何内容。
Maven 支持抢占式身份验证:https ://jfrog.com/knowledge-base/why-does-my-maven-builds-are-failing-with-a-404-error-when-hide-existence-of-unauthorized-资源启用/
Gradle 对抢占式身份验证的支持: https ://github.com/gradle/gradle/pull/386/files
我几乎在考虑设置一个本地代理来发送正确的标头 Artifactory,并指向 SBT 使用本地代理作为解析器。但是,对于开发人员来说,这似乎是不必要的麻烦。
maven - 解析 sbt 项目时出现 java.nio.file.InvalidPathException
Scala 的忠实粉丝,但 SBT 在没有牙齿的地方总是让我牙痛。通常我会管理,但这让我有些困惑。谁能帮我解决以下问题:
TL/DR
在重新导入我的 sbt 项目时,我遇到了以下错误。
[error] (update) java.nio.file.InvalidPathException: Illegal char < > at index 90: C:\Users\\-username-\AppData\Local\Coursier\cache\v1\https\repo1.maven.org\maven2\io\cucumbe r\cucumber-junit\5.7.0\cucumber-junit-5.7.0.pom.lock
在解决黄瓜依赖关系时,导入似乎遇到了一些损坏的路径,包括制表符。奇怪的是,这是重新导入;以前进口的很好。C:\Users\\-username-\AppData\Local\Coursier\cache\v1\https\repo1.maven.org\maven2\io\cucumbe r\cucumber-junit\5.7.0\
此外,无论是通过资源管理器还是 shell,都无法找到实际路径。
将项目导入 Intellij 时首先发生错误,但通过 shell 使用 SBT 产生了相同的错误。
详情如下。
有谁知道如何:
- 解决这个问题?
- 防止它再次发生?
项目可以在这里找到
完整的 SBT 日志:
已经尝试过
C:\Users\-username-\AppData\Local\Coursier\cache\
通过删除目录清除 Coursier 缓存./target
通过删除和./project/target
目录清除项目- 将有问题的 Cucumber 依赖项更新为
6.0.0-RC2
好像锁文件还存在某处,SBT不能自己重新下载?
scala - 准备快递工件以在容器内离线使用
我有一个生产我的工件的 sbt 项目xyz
。我想把它和它的所有依赖项一起放在 docker 容器中,以便可以使用它
coursier launch --mode offline xyz
重要的部分是准备工作应该使用来自主机的本地光标缓存。
我试过了
- 执行
sbt publishLocal
, - 然后解决我的工件依赖项(
cursier resolve xyz
), - 然后准备目录 -
local
&cache
- 通过将已解决的工件复制到其中 - 然后将这些目录复制到 docker 容器中(分别作为 coursier 缓存和常春藤本地)。
这不起作用,因为 coursier 没有在其输出中列出.pom
和.xml
文件。我尝试复制整个目录(abc/1.0.0
而不是abc/1.0.0/some.jar
),但是 AFAIK 没有可靠的方法来知道一个必须去多少个文件夹,因为 maven 和 ivy 具有不同的目录结构。
pre-commit.com - 如何在 pre-commit.com 中使用新的 coursier 语言?
我正在使用 pre-commit 2.8.2 并试图让新的 coursier 语言正常工作。
我能够从 CLI 成功运行 coursier 命令。
但是,我不清楚如何根据文档为 coursier 声明一个钩子。有没有使用 coursier 审查的例子?这就是我在 .pre-commit-hooks.yaml 中的内容。
当我尝试使用钩子时,出现此错误:
scala - 在集合中找不到值“versionReconciliation”
我有一个带有 sbt 项目的现有 Scala。sbt 版本1.4.7
。我想根据下一篇文章使依赖项检查更加严格:https ://www.scala-lang.org/2019/10/17/dependency-management.html
我已将下一个配置添加到我的build.sbt
:
但是得到了错误:error: not found: value versionReconciliation
我plugins.sbt
的是空的。sbt 通过Sdkman安装
java - 如何在 3rd 方库中查找依赖冲突
我正在寻找一种在 3rd 方库中查找依赖冲突的方法。我知道mvn dependency:tree
, 它的-Dverbose
和-Dincludes
选项。这很好用,但有几个缺点:
- 我需要设置一个
pom.xml
具有 3rd 方依赖项的文件。这是一种有点迂回的方式,并且对于快速查看几个库的依赖关系来说很乏味。 dependency:tree
下载所有依赖关系,对于大型依赖关系图,这可能会很慢并且消耗大量带宽。dependency:tree -Dverbose
确实显示了冲突,但它非常冗长,因为它还显示了所有非冲突的依赖项。
scala - 如何解决“无法将依赖项 [...] 添加到模块 [...] 的配置‘默认’,因为此配置不存在”?
添加ThisBuild / useCoursier := false
到我的 build.sbt 文件后出现问题。Plugins.sbt 文件是
在 IntelliJ 中加载 SBT 更改时,我得到
scala - 如何使用 Coursier 在命令行中运行 Scala 3 应用程序
如果您按照官方 Scala 3 站点(如Dotty或Scala Lang )上的步骤进行操作,那么它建议使用 Coursier 安装 Scala 3。问题是这些都没有解释如何在遵循这些步骤后运行已编译的 Scala 3 应用程序。
斯卡拉 2:
斯卡拉 3:
现在如何使用 Scala 3 运行编译后的应用程序?