boot工程不能加载.keystore
文件(can not load .keystore)
问题描述
在使用JWK
方式搭建授权服务器的时候,因为采用的是非对称加密方式,私钥用来加密,公钥用来解密达到签名的效果。通过下面方式生成
keytool -genkey
-alias askey
-keyalg RSA
-keysize 1024
-keystore e:/auth.keystore
-validity 4000
说明:
-alia
: 指定别名-keyalg
: 指定加密方式-keystore
: 指定生成文件名称-validity
: 指定有效期,单位天
将auth.keystore
文件放入src/main/resources
目录下
但是在工程启动的时候却报can not load .keystore
的异常
问题分析
明明是加入到时类路径,但却没有加载,于是到编译生成的target\class
去找auth.keystore
文件,发现确实没有这个文件,那么就是在编译的时候将这个auth.keystore
文件排除了。但是工程的pom文件插件中只有 spring-boot-maven-plugin
,难道是这个插件过滤了吗
注意auth.keystore
文件是二进制文件,应该是这个插件将这个过滤了
解决方案
引入maven-resources-plugin
插件:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>3.1.0</version>
</plugin>
然后加入:
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
<excludes>
<exclude>*.keystore</exclude>
</excludes>
</resource>
<resource>
<directory>src/main/resources</directory>
<filtering>false</filtering>
<includes>
<include>*.keystore</include>
</includes>
</resource>
</resources>
</build>
good luck!