<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<id>build-info</id>
<goals>
<goal>build-info</goal>
</goals>
</execution>
</executions>
</plugin>
这是主要班级
公共类GetSpaOsmiumVersionClient实现CommandLineRunner {
@Autowired
BuildProperties buildProperties;
public static void main( String[] args ){
SpringApplication app = new SpringApplication(GetSpaOsmiumVersionClient.class);
app.setBannerMode(Banner.Mode.OFF);
app.run(args);
}
在此处输入代码 @Override public void run(String ... args)引发异常{
Options options = new Options();
options.addOption("h", "help", false, "prints the help content");
options.addOption("v", "version", false, "version spa osmium");
try{
//Etape 2: Analyse de la ligne de commande
CommandLineParser parser = new DefaultParser();
CommandLine commandLine = parser.parse(options, args);
if(commandLine.hasOption("v")){
buildProperties.getVersion();
}else {
HelpFormatter formatter = new HelpFormatter();
formatter.printHelp( "App" , options );
System.exit(1);
}
答案 0 :(得分:1)
在 Google 搜索中找到了这个问题的类似问题,所以我会留下这个答案,以便其他开发人员可以节省一些时间。
问题标题中的错误信息
Unsatisfied dependency expressed through field 'buildProperties'
通常是由于对属性 BuildProperties
的工作方式的误解造成的。
基本上,BuildProperties
仅在我们执行了 Maven Spring Boot 插件的“build-info”目标时才有效(也就是在 cmd
中运行以下命令):
mvn spring-boot:build-info
原因是 BuildProperties 不是内置的,而是 Maven 目标的产物。执行该目标时,会生成一个文件 build-info.properties - 代码将从该文件中读取。
通常会设置 Maven 项目,以便它会在管道上自动执行该目标(在 plugins
部分,请参见下图)。但是,当我们在本地 IDE 上触发运行时,该目标不会自动执行,因此存在问题。
有关其工作原理的详细说明可以在此参考资料中找到: https://www.vojtechruzicka.com/spring-boot-version/
如果您更喜欢使用 IDE(例如:IntelliJ)而不是命令行,您可能会发现 Maven 工具窗口。您的工作是在启动服务器之前“运行”“build-info”目标。
IntelliJ 示例:https://www.jetbrains.com/help/idea/work-with-maven-goals.html