我测试出来的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中断。
我检查了manual,但它仅指出:“如果设置为true,插件将分析旧版本和新版本的档案,并根据这些版本决定是否允许二进制兼容或不兼容的更改。选项需要Major.Minor.Patch格式的版本(例如1.2.3或1.2.3-SNAPSHOT)。“
japicmp后链接semver.org,其中规定:“当你在一个向后兼容的方式添加功能次要版本” - 所以到接口的新方法显然是一个API突破。
如果我删除接口而不是添加一个方法,构建失败(因为它应该)。
我发现这个用例的测试:CompatibilityChangesTest#testMethodAddedToInterface:所以问题似乎是设置,而不是工具本身。
我做了什么?我忽略了什么?