我目前正在开发一个Spring Boot Starter,它将托管Restful Web服务,其中包含一些有关正在运行的应用程序的元数据.
我无法从mainfest文件中提取artifactId和versionId.我相信我的问题是在主Test测试应用程序之前加载了自动配置类,因此尚未发现清单.如果我从错误的角度接近问题,我不确定我的逻辑是否正确.
我最初遵循以下tutorial进行设置.
这给了我3个独立的项目
没有上下文的通用Spring服务
这些服务的AutoConfiguration项目
Spring Boot启动器
我将启动器与测试项目配对作为最终结果.
目前,maven正在与Spring Boot一起使用以生成清单文件.
Implementation-Title:MyExampleProjectWithCustomStarter
实现版本:0.0.1-SNAPSHOT
Archiver-版本:Plexus Archiver
内置:mcf
Implementation-Vendor-Id:com.coolCompany
Spring-Boot-Version:1.5.4.RELEASE
实施 – 供应商:Pivotal Software,Inc.
Main-Class:org.springframework.boot.loader.JarLauncher
Start-Class:com.coolcompany.SpringBootExampleApplication
Spring-Boot-Classes:BOOT-INF / classes /
Spring-Boot-Lib:BOOT-INF / lib /
创建者:Apache Maven 3.5.0
Build-Jdk:1.8.0_131
Implementation-URL:http:// someurl
但是,当我尝试从我的通用服务包中找到Example项目的清单文件时,我找不到该文件.
private String getApplicationVersion(String applicationName,List
当前清单实施标题:
Spring Boot Web Starter
????Spring Boot Starter
????春季启动
????Spring Boot AutoConfigure
????Spring Boot Logging Starter
????空值
????空值
????JCL-过SLF4J
????空值
????log4j的环比SLF4J
????空值
????Spring Boot Tomcat Starter
????Apache Tomcat
????Apache Tomcat
????Apache Tomcat
????冬眠验证器
????空值
????JBoss日志记录3
????同学
????杰克逊 – 数据绑定
????杰克逊的注解
????杰克逊核心
????弹簧网
????春天的AOP
????弹簧豆
????春天上下文
????弹簧webmvc
????弹簧表达
????弹簧启动执行器启动器
????弹簧启动执行器
????空值
????** MyCustom-spring-boot-starter
????** MyGenericSpringService
????空值
????空值
????空值
????度量核心
????用于度量标准的JVM集成
????空值
????空值
????杰克逊数据类型:JSR310
????** MyService-spring-boot-autoconfigure
????SLF4J的API
????弹簧核心
**缺少MyExampleProjectWithCustomStarter
清单记录数:44
嘿,经过多方努力,我发现了一个非常简单的答案. (这是spring-boot-actuator获取信息的方式)
Spring Boot Maven插件配备了build-info目标.只要在主项目中触发此目标,Spring就会有一个BuildProperties类,您可以接收信息.
您可以访问启动器中的属性,如:
@Autowired
BuildProperties buildProperties;
...
buildProperties.getArtifact();
buildProperties.getVersion();
您甚至可以从插件中指定其他属性.有关更多详细信息,请参阅插件文档:
https://docs.spring.io/spring-boot/docs/current/maven-plugin/build-info-mojo.html
不幸的是,我从来没有完全理解为什么我无法访问正确的清单,但这应该有助于其他任何人试图解决这个问题.