通过字段“ buildProperties”表示不满意的依赖关系;嵌套的异常是org.springframework.beans.factory.NoSuchBeanDefinitionException

时间:2018-09-14 15:56:42

标签: maven spring-boot

             <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);

       }

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 上触发运行时,该目标不会自动执行,因此存在问题。

enter image description here

有关其工作原理的详细说明可以在此参考资料中找到: https://www.vojtechruzicka.com/spring-boot-version/

如果您更喜欢使用 IDE(例如:IntelliJ)而不是命令行,您可能会发现 Maven 工具窗口。您的工作是在启动服务器之前“运行”“build-info”目标。

IntelliJ 示例:https://www.jetbrains.com/help/idea/work-with-maven-goals.html