kotlin maven 编译器未解决对本地依赖项的引用

Posted

技术标签:

【中文标题】kotlin maven 编译器未解决对本地依赖项的引用【英文标题】:kotlin maven compiler unresolved reference to local dependency 【发布时间】:2020-06-12 22:43:14 【问题描述】:

Google 了所有的互联网,我不知道如何解决它。 底线:有 3 个用 Kotlin 编写的具有这种文件夹结构的 Spring Boot 应用程序(微服务)

parent-folder:
  -api
  -service1
  -service2

parent-folder 只是一个方便添加微服务的文件夹。 api 是一个 Spring Boot 应用程序,但其中只有实用程序类对所有其他微服务都是通用的 在带有api 的文件夹中我做mvn install,jar 已安装并进入.m2/ 文件夹 这是我添加到 service1 依赖项中的已安装服务,当我尝试这样做时 mvn install,在带有service1 的文件夹中我收到错误Error: (4,21) kotlin: Unresolved reference: api 为了清楚起见,这里是 pom Api service 的屏幕

service1 中的依赖关系

编译service1的插件

当我尝试在service1 中创建mvn install 时,我收到一个错误提示

maven kotlin 编译器只是看不到包,但是如果我将它作为应用程序运行,一切都在 intellij 想法中工作,我不知道我应该做什么;为什么kotlin maven编译器不想从本地maven获取依赖 jar api里面有这样的类

【问题讨论】:

【参考方案1】:

在我的情况下,解决方案是 jar 生成的逻辑 api 服务是一个 spring 项目,当我尝试做 mvn clean install 它创建 jar 结构:

api.jar
    -META-INF
    -BOOT-INF

但是当另一个服务使用它时,maven 找不到所需的包,因为它在包名称中查找,而不是在 META 或 BOOT 文件夹中查找

重要提示! 当您在 src/main/kotlin 之类的项目中创建文件夹时,maven-kotlin-compiler 将在 META 文件夹内的 jar 中创建生成的类,但是如果您创建 src/main/java 它将创建包含在文件夹内生成的类的 jar命名你的包名

【讨论】:

以上是关于kotlin maven 编译器未解决对本地依赖项的引用的主要内容,如果未能解决你的问题,请参考以下文章

Gradle 依赖项未列出本地 maven jar 的依赖项

无法收集对本地 Artifactory Pypi 存储库的补丁依赖项

抑制 Maven 依赖插件的“发现未使用的声明依赖项”警告

构建 iOS 框架时未找到 Ktor 和 kotlinx 依赖项

如何使用单个build.gradle配置向kotlin多平台项目添加依赖项

如何从 Eclipse 中的 Maven 项目中删除未使用的依赖项? [复制]