无法使用自定义 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 中所述。

具体来说,缺少以下设置:

&lt;repositories&gt; 配置在pom.xml &lt;servers&gt; 本地配置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中的自定义类型

存储库中的 Nx 自定义原理图无法加载

如何在共享库中管理 spring-cloud 引导属性?

带有可分页的 Spring 自定义查询

无法使用 spring mvc 和 $http 访问 CORS 环境中的自定义标头

ASP.NET Web 应用程序无法使用自定义引导程序正确显示内容