无法使用自定义 Spring 引导库中的类
Posted
技术标签:
【中文标题】无法使用自定义 Spring 引导库中的类【英文标题】:Unable to use class from Custom Spring boot library 【发布时间】:2021-11-22 06:07:42 【问题描述】:目标
我想将私有存储库用作其他 Spring Boot 项目中的库,方法是将其托管为 GitHub package。
图书馆项目
https://github.com/sagarnayak/privatecentralrepo
客户项目
https://github.com/sagarnayak/repoclientproject
复制步骤
库项目有一个 library001 模块。这是我想用作其他项目的库。
在库模块pom文件中,我添加了repackage执行目标。
......
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
<configuration>
<classifier>exec</classifier>
</configuration>
</execution>
</executions>
</plugin>
......
我想将该模块用作库并将其作为private GitHub package 托管。
当我在 library001 模块中执行 mvnw deploy
时,这应该会创建一个 exec jar 并推送到 GitHub 以在其他项目中使用该库。
Github 有这个 exec jar。
为了在客户端项目中使用 jar,我已将此作为依赖项添加到客户端项目中。
<dependency>
<groupId>com.sagar</groupId>
<artifactId>libraray001</artifactId>
<version>0.0.3-SNAPSHOT</version>
<classifier>exec</classifier>
</dependency>
这会使项目进入客户端项目的外部库部分。这有我想在库中使用的类(TestModel001)。
但是当我尝试将它导入到我想使用的任何类中时,它无法解析导入。
如何在这个项目中使用库项目?
【问题讨论】:
您是否尝试过 google 如何将 github 重新设置为 maaven repo? Github项目成功拉到执行项目。我认为这没有任何问题。我认为这与我在库项目或实施项目中所做的设置有关。 @Antoniossss 我添加了来自实施项目外部库部分的屏幕截图。它有图书馆项目。Library001
是 Spring Boot 应用程序,不能用作消耗性库...
在项目的根目录中也有代码,其中包装为 pom
将不起作用,因为 pom 没有代码并且它不会编译等。
@khmarbaise 如何将 spring boot 项目用作消耗库?我已经尝试将执行添加到 lib 项目。 github.com/sagarnayak/privatecentralrepo/blob/… 到库 pom 文件。有什么建议吗?
【参考方案1】:
sagarnayak/repoclientproject 上可见的客户端项目未配置为使用 GitHub 上托管的私有 Maven 存储库中的工件,如 Working with the Apache Maven registry 中所述。
具体来说,缺少以下设置:
<repositories>
配置在pom.xml
<servers>
本地配置settings.xml
将以下元素添加到pom.xml
:
<repositories>
<repository>
<id>github</id>
<url>https://maven.pkg.github.com/sagarnayak/</url>
</repository>
</repositories>
将以下元素添加到settings.xml
<servers>
<server>
<id>github</id>
<username>sagarnayak</username>
<password>YOUR_PERSONAL_ACCESS_TOKEN_HERE</password>
</server>
</servers>
注意:将 settings.xml
保留在您的计算机本地 - 不要泄露个人访问令牌!
【讨论】:
您好 这已经在 .m2 settings.xml 文件中配置了。我能够成功地将代码拉到客户端项目中。 很高兴听到!无论如何,你能接受答案吗? 问题不在于。问题是我能够从 Github 获取代码。但我无法导入我的代码。 请在***.com/a/66307680/1091731查看接受的答案【参考方案2】:您正在通过spring-boot-maven-plugin
打包库
它会生成一个具有自运行 spring boot 结构的 JAR,因此您无法将其作为库正确导入。
尝试从您的libraray001
pom.xml 中删除spring-boot-maven-plugin
,重新构建、重新发布并尝试再次在您的client
项目中使用该工件,刷新依赖项并最好提高库版本,以排除缓存的可能性在测试期间。
【讨论】:
【参考方案3】:我解决了这个问题-
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<id>repackage</id>
<configuration>
<classifier>exec</classifier>
</configuration>
</execution>
</executions>
</plugin>
问题出在 pom 文件上。
我使用的是旧版本的配置。
【讨论】:
以上是关于无法使用自定义 Spring 引导库中的类的主要内容,如果未能解决你的问题,请参考以下文章
无法专门化std :: hash来存储unordered_map中的自定义类型