概要
Hamcrest 2.1が2018/12/20にリリースされました。
これまでは複数のjarに分割されていたものが、1つのjarに統合されたようです。
公式サイトに、バージョン1.xからのバージョンアップ手順も公開されています。
主な変更点
- 前述の通り、jarの提供方法が変わりました。
- org.hamcrest.Factory アノテーションが削除されました。
pom.xmlの書き方
1つだけになったので単純です。
<dependency>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest</artifactId>
<version>2.1</version>
<scope>test</scope>
</dependency>
build.gradleの書き方
1つだけなので単純です。
apply plugin: 'java'
dependencies {
testImplementation 'org.hamcrest:hamcrest:2.1'
}
アップグレード時の注意点
JUnit4はhamcrest-core-1.3.jarに依存している為、そのままではmaven等でうまく依存関係を解消できません。その為、hamcrestでは中身の入っていないhamcrest-core、hamcrest-libraryをリリースすることでこの問題を解決するそうです。
その他のライブラリで同様にhamcrest-core-1.3に依存するものがあれば、下記のような対策を打つことになります。
build.gradleでは、以下のように書きます。
apply plugin: 'java'
dependencies {
testImplementation 'org.hamcrest:hamcrest:2.1'
testImplementation 'org.hamcrest:hamcrest-library:2.1'
testImplementation 'junit:junit:4.12'
}
pom.xmlでは、以下のように書きます。
hamcrest-libraryは他のdependencyより前に記載しないとhamcrest-library 2.1より古いバージョンが利用されてしまう、と公式サイトでは説明されています。
<dependencies>
<dependency>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest</artifactId>
<version>2.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest-library</artifactId>
<version>2.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
</dependencies>