创建和发布Kotlin库以避免多个运行时问题的正确方法是什么?

时间:2017-06-29 19:52:30

标签: java maven kotlin

我有一个Kotlin库,我想发布到Maven存储库并在其他应用程序中使用。

但是当我在Kotlin应用程序中将其添加为依赖项(pom.xml)时,我收到此警告:

[WARNING] Some JAR files in the classpath have the Kotlin Runtime library bundled into them.
This may cause difficult to debug problems if there's a different version of the
Kotlin Runtime library in the classpath. Consider removing these libraries from the classpath
or use '-Xskip-runtime-version-check' to suppress this warning
[WARNING] .........mylib.jar: (-1, -1) Library has Kotlin runtime bundled into it

这是什么意思?我是否需要以某种方式从我的库JAR中排除kotlin-stdlib?但是如果我也想在Java应用程序中使用它呢?

2 个答案:

答案 0 :(得分:0)

原来这只是我的图书馆项目特有的问题。

我正在使用maven-shade-plugin生成"脂肪" JAR(包含所有依赖项)替换了原始JAR(因此我部署了捆绑所有依赖项的JAR而不仅仅是库本身和依赖项列表),因为它也可以用作简单的控制台应用程序。

因此解决方案是将应用程序移动到单独的项目或保留原始JAR(在插件配置中使用<shadedArtifactAttached> + <shadedClassifierName>)和/或在使用Maven部署期间禁用此插件此处描述的个人资料https://stackoverflow.com/a/39558669/964478

答案 1 :(得分:0)

我在 Kotlin 应用中遇到了类似的问题。当我从导入的胖 jar 中排除 kotlin-stdlib 库时,问题就消失了。如果在 Java 应用中使用 fat jar,则不要排除依赖。