首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >与Maven解决库冲突

与Maven解决库冲突
EN

Stack Overflow用户
提问于 2021-02-07 20:35:36
回答 1查看 84关注 0票数 2

从kotlin 1.4.30开始,kotlin编译器-可嵌入依赖项在其主jar包中包含了用于“embeddable”库的文件。这个问题与我的pom.xml文件中的本地指定的fastutil版本相冲突。

是否有任何方法可以包括1.4.30Kotlin编译器可嵌入的依赖项,而忽略/ it /unimi/dsi/快捷文件夹,这样它就只能使用我指定的版本了吗?

kotlin编译器的屏幕截图-可嵌入布局:

项目在这里:https://gofile.io/d/9m5LiV

代码语言:javascript
运行
复制
import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap // Default imports from the kotlin-compiler-embeddable lib

fun main(args: Array<String>) {
    // http://fastutil.di.unimi.it/docs/it/unimi/dsi/fastutil/ints/Int2ObjectOpenHashMap.html#%3Cinit%3E(int)
    // ^ this is possible when you dont have a kotlin-compiler-embeddable conflict
    // Because its importing this class from the kotlin-compiler-embeddable library
    // instead of the fastutil library itself
    val map = Int2ObjectOpenHashMap<String>(10)
    println("Hello World!")
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-07 21:32:49

Maven 2.0.9早在2008年就引入了类路径上依赖项的确定性排序。

如果您有两个包含相同类的依赖项,则pom中提到的第一个类将获胜。

您可以使用mvn dependency:build-classpath检查类路径。

在您的例子中,在kotlin编译器之前放置fastutil。

代码语言:javascript
运行
复制
<dependency>
    <groupId>it.unimi.dsi</groupId>
    <artifactId>fastutil</artifactId>
    <version>8.2.1</version>
</dependency>
<dependency>
    <groupId>org.jetbrains.kotlin</groupId>
    <artifactId>kotlin-compiler-embeddable</artifactId>
    <version>1.4.30</version>
</dependency>

备注:

  1. 你问题的措辞令人费解。kotlin编译器-可嵌入是项目中的一个常规依赖项,而不是插件。
  2. 我检查了kotlin-compiler是否也使用了,所以使用它而不是kotlin-compiler-embeddable不会有帮助。
  3. 缺少构造函数问题的原因是,kotlin本身并不是在使用repackaged本身,而是一个重新打包的版本intellij Quickutil-8.3.1-1。参见提交:为202及更高版本的平台添加快捷键依赖项
  4. 如果你打算把你的应用作为一个uber-jar发布,一定要检查你的打包眼镜。Maven阴影插件有强大的过滤工具。
  5. 虽然依赖类路径顺序的实现和工作速度快,但它可能会令人惊讶。请考虑重新打包您的kotlin编译器依赖项,而不需要快速库。
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66092841

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档