事象
mvnコマンドにてwarファイルを生成すると、WEB-INF/libの中に同じ内容のJarが2つ入ってしまう。
WEB-INF/lib
slim3-1.0.18-20180504.201437-1.jar
slim3-1.0.18-SNAPSHOT.jar
POMはこう。
pom.xml
<repositories>
<repository>
<id>slim3-repo</id>
<url>http://slim3.github.com/slim3/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>org.slim3</groupId>
<artifactId>slim3</artifactId>
<version>1.0.18-SNAPSHOT</version>
</dependency>
</dependencies>
Jarの取得元はココ。
https://github.com/Slim3/slim3/tree/gh-pages/org/slim3/slim3
バージョンは 1.0.18-SNAPSHOT。
1.0.18-SNAPSHOT フォルダの maven-metadata.xml を見てみると versioning に 20180504.201437-1 が登場している。
期待結果
dependencyで指定したバージョンのJarファイルのみが含まれてほしい。
WEB-INF/lib
slim3-1.0.18-SNAPSHOT.jar
問題だった箇所
maven-war-pluginのバージョンを指定せずに使っていた。ログを見たところバージョン2.2が使われていた。
pom.xml
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
</plugin>
バージョンを変えて試したところ、2.4以降を指定すると期待結果になった。
解決方法
maven-war-pluginをバージョン指定して使う。バージョンは 2.4 以降を指定する。
なお投稿時点での最新バージョンは 3.2.1 。
pom.xml
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.4</version>
</plugin>
参考
issue
maven-war-plugin can cause multiple dependent lib files with same snapshot version.