spring.factories配置的内容读取不到

  • Post author:
  • Post category:其他


springboot项目的spring-boot-maven-plugin打包工具
<plugins>
    <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
        <configuration>
            <skip>true</skip>
        </configuration>
        <executions>
                    <execution>                    
                        <goals>
                            <goal>repackage</goal>
                        </goals>                                        
                    </execution>
          </executions>
    </plugin>
</plugins>

executions的repackage部分可以不需要,打包后效果一样。skip为true打包后结果如下(整个插件都不配置也是一样的效果):

去掉skip部分打包后如下:多了boot的东西,自己的代码则放在BOOT-INF里面了

我新建的一个springboot项目只是增加了spring.factories和一个配置类,之前用的别人的springboot工程没问题,自己添加的却死活加载不了。将springboot读取的部分代码拷贝出来执行

就是获取不到对应自己jar文件,只有spring自己的

file:/E:/repo/org/springframework/boot/spring-boot/2.2.5.RELEASE/spring-boot-2.2.5.RELEASE.jar!/META-INF/spring.factories

file:/E:/repo/org/springframework/boot/spring-boot-autoconfigure/2.2.5.RELEASE/spring-boot-autoconfigure-2.2.5.RELEASE.jar!/META-INF/spring.factories

file:/E:/repo/org/springframework/spring-beans/5.2.4.RELEASE/spring-beans-5.2.4.RELEASE.jar!/META-INF/spring.factories

在第一个截图中发现有两个META-INF,而之前别人的工程打包之后只有一个。调整了springboot的版本,依赖包始终没有解决。spring.factories只是在一个META-INF中,就是导致找不到我们自己打的jar包。

手动到install之后jar包删除多余的一个META-INF测试依然没解决。

手动复制META-INF然后Refactor-》Rename 把这个名字又覆盖了一下,发现之前是目录的小图标变了树型图标

,再次打包install之后

两个目录都有spring.factories文件,再次执行代码找到了我们的jar

file:/E:/repo/io/renren/dynamicdatasource/0.0.1-SNAPSHOT/dynamicdatasource-0.0.1-SNAPSHOT.jar!/META-INF/spring.factories

之前是自己手动创建的META-INF目录,不知道为啥会导致这样的问。



版权声明:本文为su317原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。