我创建了一个本地Maven Repo并在那里部署了一个自己的lib: 用:
mvn clean package install deploy
在:
http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0
<groupId>de.example</groupId>
<artifactId>example-lib</artifactId>
<version>0.0.1</version>
<packaging>jar</packaging>
<name>example-lib</name>
<description>Demo project for Spring Boot</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.3.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
<distributionManagement>
<repository>
<id>example.repo</id>
<name>example internal mvn repository</name>
<url>file://${project.basedir}/../mvn-repo</url>
</repository>
</distributionManagement>
现在另一个项目使用它来消费它:
<repositories>
<repository>
<id>example.repo</id>
<url>file://${project.basedir}/../mvn-repo</url>
</repository>
</repositories>
...
<dependency>
<groupId>de.example</groupId>
<artifactId>example-lib</artifactId>
<version>0.0.1</version>
</dependency>
...
但是在编译项目时,lib中缺少所有符号(但依赖关系已解析,并且.jar文件在那里)
[INFO] -------------------------------------------------------------
[ERROR] COMPILATION ERROR :
[INFO] -------------------------------------------------------------
[ERROR] /C:/Users/gregor/Documents/dev/repo/example/core/src/main/java/de/example/core/CoreApplication.java:[11,31] package de.example.examplelib does not exist
[ERROR] /C:/Users/gregor/Documents/dev/repo/example/core/src/main/java/de/example/core/DbExampleService.java:[11,42] package de.example.examplelib.db.example does not exist
[ERROR] /C:/Users/gregor/Documents/dev/repo/example/core/src/main/java/de/example/core/DbExampleService.java:[12,42] package de.example.examplelib.db.example does not exist
[ERROR] /C:/Users/gregor/Documents/dev/repo/example/core/src/main/java/de/example/core/DbExampleService.java:[19,17] cannot find symbol
symbol: class UserRepository
location: class de.example.core.DbExampleService
[ERROR] /C:/Users/gregor/Documents/dev/repo/example/core/src/main/java/de/example/core/DbExampleService.java:[35,39] cannot find symbol
symbol: class User
location: class de.example.core.DbExampleService
我搜索了最近4个小时,也许我只是想念一些基本的东西? 打开提示。提前谢谢。
答案 0 :(得分:0)
当Maven无法找到依赖关系时,它明确地这样说。 你的问题是不同的;看来你的jar实际上可能是空的(即你有正确的依赖;它只是没有正确打包)。
Maven存储库只是一个简单的文件集合;你可以进去打开你的罐子;我建议检查你的mvn-repo,看看你所包含的jar是否包含你希望包含的类。
如果我是对的(即你的jar没有正确打包),请查看默认的maven目录结构等(Maven用于默认从java
获取src/main/java
个文件;也许你使用不同的源文件夹,而你没有告诉Maven?)
编辑1 总结评论和其他答案中的讨论:
到目前为止,我们知道您的jar包装不正确。好吧,它被错误地打包以便被其他项目使用。因此,您看到的错误是正常的。准时,错误是因为你指的是班级
例如de/example/examplelib/db/example/User.class
,但此类位于错误的位置(de
包应位于jar的根目录中,而不是BOOT-INF/classes
文件夹中。)
最有可能发生这种情况,因为您用来打包库的pom.xml
文件是从spring-boot父级继承的(或者您有一些其他未配置的配置)。
因此,鉴于这些事情,您需要重新陈述您的问题: