导出为库时扩展类方法不可用

2024-02-23

我正在尝试构建一个java库(streaming-client.jar)并在客户端微服务中使用它。

在这个 jar 文件中,我有一个 POJO 类,它扩展了第三方 POJO 类

 @ConditionalOnClass({Options.class})
 @ConfigurationProperties(prefix = "nats.spring")
 public class ServerProps extends NatsProperties {
 
   public ServerProps(){ super(); }
  }

现在这个NatsProperties类来自第三方库,该类扩展了另一个自动配置类。

当我使用ServerProps在这个库本地,我可以访问以下方法NatsProperties超级一流。

但是当我将此库导出为 jar 文件时。并在客户端应用程序中使用它。

NatsProperties方法无法通过ServerProps class

在客户处

  ServerProps props = new ServerProps();
  props.server("sdfsfsdfsdf")//server method cant be resolved, 

EDIT

我尝试添加所有方法NatsProperties类到我的自定义类StreamingServerProperties

然后当我尝试在其他项目中访问它们时,如下所示

   StreamingServerProperties props = new StreamingServerProperties();
   props.server("serverUrl") //Intellij complains that Cannot access io.nats.spring.boot.autoconfigure.NatsProperties

Streaming-client.jar 的 build.gradle

  plugins {
    id 'java-library'
    id 'maven-publish'
    id "com.github.johnrengelman.shadow" version "7.1.2"
  }

 group = 'com.dexter'
 version = '0.0.1-SNAPSHOT'
 sourceCompatibility = '11'

 repositories {
    mavenCentral()

  }

publishing {
     publications {
          mavenJava(MavenPublication) {
                from components.java
                versionMapping {
                    usage('java-api') {
                        fromResolutionOf('runtimeClasspath')
                    }
               usage('java-runtime') {
                   fromResolutionResult()
               }
            }
         }
     }
   }
  tasks.named('compileJava') {
        inputs.files(tasks.named('processResources'))
  }
 dependencies {
     implementation 'io.nats:nats-spring:0.5.6'
     testImplementation 'org.junit.vintage:junit-vintage-engine:5.9.0'
     testImplementation 'org.springframework.boot:spring-boot-starter-test:2.6.3'
     testImplementation 'org.junit.jupiter:junit-jupiter-engine:5.9.0'
     testImplementation 'org.junit.platform:junit-platform-engine:1.9.0'
        testImplementation 'org.junit.platform:junit-platform-launcher:1.8.2'
    testImplementation 'org.junit.jupiter:junit-jupiter-api:5.9.0'
    implementation('np.com.madanpokharel.embed:nats-embedded:2.1.0')
   }

  tasks.named('test') {
   useJUnitPlatform()
 }

我在用./gradlew build生成一个 jar 的任务,并且使用这个 jar 我无法获得NatsProperties类方法。

但如果我使用fatJar任务由此shadow插件我能够获取方法,但问题是它创建了所有库并且大小太大。


我能够通过添加依赖项来解决它api

代替

   implementation 'io.nats:nats-sprin:0.5.6' // this adds to runtimeclass path

我试过这个

   api 'io.nats:nats-sprin:0.5.6' //this adds to both compile and runtime

正如我正在使用的java-librarygradle 插件。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

导出为库时扩展类方法不可用 的相关文章

随机推荐

  • “错误:<路径> 属性 d:预期数字,“MNaN、NaNLNaN、NaNL…”。“ D3 错误

    我正在从 Quandl 的 API 导入一些数据 以制作多年来布伦特油价的图表 我正在提供来自 Angular 发出的 HTTP 请求的数据 不知何故 所提供的数据没有被读取为数字 因为我收到以下错误 错误 属性 d 预期数字 MNaN N
  • 设计 Vuetify 选择器的样式

    选择器的 Vuetify 组件是
  • TMonthCalendar 和 Delphi 样式 (Delphi XE2)

    TMontCalendar 似乎是一个 Windows 包装器 因此它不会受到新的 VCL 样式的影响 您知道解决方案吗 The TMonthCalendar http docwiki embarcadero com Libraries e
  • 当 Angular 完成向 DOM 添加范围更新时,如何触发方法?

    我正在寻找一种在向 scope 变量 在本例中为 scope results 添加更改后执行代码的方法 我需要这样做是为了调用一些遗留代码 这些代码要求项目位于 DOM 中才能执行 我的真实代码是触发 AJAX 调用 并更新作用域变量以更新
  • 如何使用 Sunspot 设置具有多对多关系的构面搜索?

    我之前没有实现过搜索功能 感觉有点卡住 我有一个太阳黑子搜索功能 可以根据关键字查找结果 这非常有效 但我现在想实现多选方面功能 但我什至不知道如何设置基本的方面搜索 我有多对多的关系 在 Rails 中而不是在现实生活中 类人 has m
  • 静态方法中的 Lock()

    我有一个多线程应用程序 它使用静态方法写入设置 xml 文件 我想避免文件同时更新两次 导致访问 写入异常 我怎么做 这不起作用 namespace Program public class Settings private static
  • DatePicker 未显示泰国文化的正确年份(2021 年应为 2564)

    我正在开发一个支持各种语言 文化的应用程序 但是 DatePicker 控件对于泰国文化来说似乎有问题 我尝试使用 ThreadCulture 也尝试过 CultureInfo CurrentCulture 或 CultureInfo Cu
  • C++11/14/17 Lambda 引用捕获 [&] 不复制 [*this]

    参考这个线程 https www open std org jtc1 sc22 wg21 docs papers 2018 p0806r2 html https www open std org jtc1 sc22 wg21 docs pa
  • System.getenv() 没有列出所有环境变量

    我注意到 JVM 没有获取我的一些环境变量 In my bash profile我定义了以下内容 IO HOME some value export IO HOME 并通过在 shell 中执行以下操作 echo IO HOME 我得到了正
  • Excel VBA,如何回复特定电子邮件

    我每个星期三都会收到来自特定发件人的邮件 此电子邮件的主题有时会发生变化 主题 暴露声明 COB 20150217 的示例 1 主题 保证金通知 COB 2015 Feb 10 的示例 2 发件人附加的日期是我收到邮件的前一天 我有以下代码
  • 具有固定标题的表格上的水平滚动

    我已经使用CSS创建了一个固定标题 主要只是设置要固定的标题位置 但是我遇到的问题是如果用户的分辨率大小或窗口大小小于表格大小 我需要添加在水平滚动条中 以便他们可以看到所有内容 我尝试将溢出设置为自动并滚动 但只有当我向下滚动到页面底部时
  • 如何加粗和更改图表标题的字体大小

    我可以动态创建箱线图 我现在面临的问题是我不知道如何bold并改变字体大小 of the 图表标题 我在网上研究了一段时间 但不知道如何做到这一点 这是我的代码 Chart Chart1 new Chart Chart1 DataSourc
  • CONTROL-C 之后 Django 服务器仍在运行

    我启动 Django 服务器python manage py runserver然后使用 CONTROL C 退出 但我仍然可以访问以下网址ROOT URLCONF why 可能您让另一个进程在其他地方运行 以下是列出命令包含的所有进程的方
  • string.replaceAll() 性能是否会受到字符串不变性的影响?

    假设我对一个大字符串调用了replaceAll 它替换了 1 000 个匹配实例 这是否意味着由于字符串不可变性 在进程中创建并重新分配了 1 000 个字符串 有没有更快的替代方案 如果你深入挖掘String http www docja
  • Java 泛型谜题,扩展类并使用通配符

    一段时间以来 我一直在努力解决这个问题 并认为也许一些新人会看到这个问题 谢谢你的时间 import java util class Tbin
  • ASP.NET - 以编程方式使用 GridView

    我继续从这个帖子 https stackoverflow com questions 1301581 asp net programmatic edit 经过多次谷歌搜索后 我想出了这段代码来以编程方式编辑单元格 using System
  • Windows Phone 8.1 运行时文本大纲

    Is there a way to show text outline on a TextBlock I am showing some text on top of map control and would like to show t
  • MinMax 树 - 当 Min 可以两步获胜时

    因此 我一直在尝试使用最小最大树来在两人棋盘游戏中创建一个简单的计算机玩家 我了解该算法的基础知识 但有一种情况让我的火鸡大脑无法理解 当 MIN 可以通过两步获胜时会发生什么 例如 假设在 connect4 tic tac toe 类型的
  • Python 中的比较运算符与“丰富比较”方法

    有人可以向我解释一下两者之间的区别吗 这些通常是等价的吗 也许我在这里完全错了 但我认为每个比较运算符都必然与一个相关 丰富的对比 方法 这是来自文档 运算符号与方法名的对应关系如下 如下 x
  • 导出为库时扩展类方法不可用

    我正在尝试构建一个java库 streaming client jar 并在客户端微服务中使用它 在这个 jar 文件中 我有一个 POJO 类 它扩展了第三方 POJO 类 ConditionalOnClass Options class