を破壊しない、私はjapicmpのMavenのプラグインをテストしています:ビルドはマイナーバージョンの変更について
<plugin>
<groupId>com.github.siom79.japicmp</groupId>
<artifactId>japicmp-maven-plugin</artifactId>
<version>0.9.3</version>
<configuration>
<oldVersion>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>${project.artifactId}</artifactId>
<version>${lastBaseVersion}</version>
<type>jar</type>
</dependency>
</oldVersion>
<newVersion>
<file>
<path>${project.build.directory}/${project.artifactId}-${project.version}.${project.packaging}</path>
</file>
</newVersion>
<parameter>
<onlyModified>true</onlyModified>
<breakBuildBasedOnSemanticVersioning>true</breakBuildBasedOnSemanticVersioning>
</parameter>
<skip></skip>
</configuration>
<executions>
<execution>
<phase>verify</phase>
<goals>
<goal>cmp</goal>
</goals>
</execution>
</executions>
</plugin>
それをテストするために、私は、既存のプロジェクトを複数回コピーして、インターフェイスにメソッドを追加しました(すなわち、APIを破った)。
パッチバージョン(1.0.0 - > 1.0.1)のみを増やして、メジャーバージョン(1.0.0 - > 2.0.0)で正しく無視されると、APIブレークが正しく報告されます。
ただし、マイナーバージョンの変更については報告されません。私はおそらくここで基本的なものを見落としているかもしれませんが、APIのブレークはマイナーバージョンの変更について報告されるべきです。
「trueに設定すると、プラグインは古いアーカイブと新しいアーカイブのバージョンを分析し、バイナリ互換または互換性のない変更が許可されているかどうかに基づいてこれらのバージョンに基づいて決定します。オプションは、Major.Minor.Patch(1.2.3または1.2.3-SNAPSHOTなど)の形式でバージョンを期待しています。述べsemver.orgへ
japicmp後でリンク:「あなたは後方互換性のある方法で機能を追加マイナーバージョンは、」 - だから、インタフェースへの新しい方法が明確にAPIの休憩です。
メソッドを追加するのではなくインターフェイスを削除すると、ビルドが失敗することがあります。
私はこのユースケースのテストを見つけました:CompatibilityChangesTest#testMethodAddedToInterface:それはツール自体ではなく、セットアップに問題があるようです。
私は何をしましたか?何を見落としましたか?