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!