問題描述
<packing>war</packing>
的項目中,有類似下面快照版的依賴:
<dependency>
<groupId>com.company</groupId>
<artifactId>sale</artifactId>
<version>1.0.0-SNAPSHOT</version>
</dependency>
這種依賴在打包 war 的時候,經常在 WEB-INF/lib 目錄下面發現類似的 jar 包:
- sale-1.0.0-SNAPSHOT.jar
- sale-1.0.0-20190419.080114-12.jar
如果 jar 包有 spring 需要掃描的資源文件或者 Bean,就會因爲重複導致啓動失敗。
解決辦法
根據上述問題,通過配置 maven war 插件排除帶日期後綴的 jar 包即可。
配置如下:
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>2.2</version>
<configuration>
<packagingExcludes>%regex[WEB-INF/lib/.*-\d{8}.\d{6}-?\d*.jar]</packagingExcludes>
</configuration>
</plugin>
通過正則匹配日期後綴的 jar 包進行排除,這樣就能避免重複的 jar 包了。