我目前正在开发一个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 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
不幸的是,我从来没有完全理解为什么我无法访问正确的清单,但这应该有助于其他任何人试图解决这个问题.