demo1项目是一个springboot项目,demo项目也是一个springboot项目。 我在demo1中写了一个Java类Test.java:
package com.example.demo1;
public class Test {
public void test() {
System.out.println("11111111111111");
}
}
并将其安装到本地 Maven 存储库:
mvn install:install-file "-DgroupId=com.example" "-DartifactId=demo1" "-Dversion=0.0.1-SNAPSHOT" "-Dpackaging=jar" "-Dfile=target/demo1-0.0.1-SNAPSHOT.jar"
在demo项目中,我建立demo1项目的依赖,内容为 pom.xml:
<dependency>
<groupId>com.example</groupId>
<artifactId>demo1</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
当我构建演示项目时,发生了错误:
mvn clean package
错误消息在这里:
com.example.demo1 does not exists
Test cannot find symbol!
最佳答案
您可能正在使用 spring-boot-maven-plugin
创建可运行的 Spring Boot 应用程序 Artifact 。该插件创建了一个确实具有扩展名 *.jar 的 Artifact ,但实际上它根本不是一个 jar:它具有 BOOT-INF/lib
中的所有依赖项,它在 list 中使用特殊条目,并且很快。 Java(JVM)无法读取这个jar,Spring Boot应用程序使用一个特殊的类加载器来读取这个结构,这对于Spring Boot应用程序来说是相当独特的。
如果您想了解我在说什么 - 只需使用 WinRAR/WinZIP 或其他工具打开 Spring Boot 应用程序的 JAR,您就会自己看到它。
这就是为什么一般来说你不能真正依赖 Spring Boot 应用程序。
话虽如此,现在有一些解决方法:
很可能您并不真正需要依赖于整个应用程序,而是依赖于一些“通用”代码 - 在这种情况下,请考虑将其重构为单独的模块,并使两个应用程序都依赖于此模块。
使用This link对于 Maven 中插件配置级别的解决方法,您最终会得到可能实现您想要的功能的额外 jar。
关于java - 为什么我无法从本地存储库导入 Maven jar?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60482813/