You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by kw...@apache.org on 2022/11/16 10:56:45 UTC

[maven] 01/01: [MNG-7598] Enforce binary backwards-compatibility

This is an automated email from the ASF dual-hosted git repository.

kwin pushed a commit to branch feature/enforce-backwards-compat
in repository https://gitbox.apache.org/repos/asf/maven.git

commit 1c555e1be60696742a8ce6941e137e6af24063a0
Author: Konrad Windszus <kw...@apache.org>
AuthorDate: Wed Nov 16 11:54:12 2022 +0100

    [MNG-7598] Enforce binary backwards-compatibility
    
    For now only enabled in core and plugin-api
    Currently breaks build due to incompatible changes compared to 3.8.6
---
 maven-core/pom.xml       |  4 ++++
 maven-plugin-api/pom.xml |  4 ++++
 pom.xml                  | 48 ++++++++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 56 insertions(+)

diff --git a/maven-core/pom.xml b/maven-core/pom.xml
index fabf87ee1..02c1a2ddf 100644
--- a/maven-core/pom.xml
+++ b/maven-core/pom.xml
@@ -276,6 +276,10 @@ under the License.
           </execution>
         </executions>
       </plugin>
+      <plugin>
+        <groupId>com.github.siom79.japicmp</groupId>
+        <artifactId>japicmp-maven-plugin</artifactId>
+      </plugin>
     </plugins>
   </build>
 </project>
diff --git a/maven-plugin-api/pom.xml b/maven-plugin-api/pom.xml
index 198a90c10..aed3709be 100644
--- a/maven-plugin-api/pom.xml
+++ b/maven-plugin-api/pom.xml
@@ -114,6 +114,10 @@ under the License.
           </execution>
         </executions>
       </plugin>
+      <plugin>
+        <groupId>com.github.siom79.japicmp</groupId>
+        <artifactId>japicmp-maven-plugin</artifactId>
+      </plugin>
     </plugins>
   </build>
 </project>
diff --git a/pom.xml b/pom.xml
index 2ccd6b9c6..421b3c315 100644
--- a/pom.xml
+++ b/pom.xml
@@ -578,6 +578,54 @@ under the License.
           <artifactId>buildnumber-maven-plugin</artifactId>
           <version>1.4</version>
         </plugin>
+        <!-- enforce backwards compatibility -->
+        <plugin>
+          <groupId>com.github.siom79.japicmp</groupId>
+          <artifactId>japicmp-maven-plugin</artifactId>
+          <version>0.16.0</version>
+          <executions>
+            <execution>
+              <phase>verify</phase>
+              <goals>
+                <goal>cmp</goal>
+              </goals>
+              <configuration>
+                <parameter>
+                  <!-- baseline is 3.8.6 for Maven 4 -->
+                  <oldVersionPattern>3.8.6</oldVersionPattern>
+                  <breakBuildOnBinaryIncompatibleModifications>true</breakBuildOnBinaryIncompatibleModifications>
+                  <onlyBinaryIncompatible>true</onlyBinaryIncompatible>
+                  <!-- only exported packages from maven-core/META-INF/maven/extension.xml matter  -->
+                  <includes>
+                    <include>org.apache.maven.artifact</include>
+                    <include>org.apache.maven.classrealm</include>
+                    <include>org.apache.maven.cli</include>
+                    <include>org.apache.maven.configuration</include>
+                    <include>org.apache.maven.exception</include>
+                    <include>org.apache.maven.execution</include>
+                    <include>org.apache.maven.execution.scope</include>
+                    <include>org.apache.maven.feature</include>
+                    <include>org.apache.maven.graph</include>
+                    <include>org.apache.maven.lifecycle</include>
+                    <include>org.apache.maven.model</include>
+                    <include>org.apache.maven.monitor</include>
+                    <include>org.apache.maven.plugin</include>
+                    <include>org.apache.maven.profiles</include>
+                    <include>org.apache.maven.project</include>
+                    <include>org.apache.maven.reporting</include>
+                    <include>org.apache.maven.repository</include>
+                    <include>org.apache.maven.rtinfo</include>
+                    <include>org.apache.maven.rtinfo.internal</include>
+                    <include>org.apache.maven.settings</include>
+                    <include>org.apache.maven.toolchain</include>
+                    <include>org.apache.maven.usability</include>
+                  </includes>
+                  <includeExclusively>true</includeExclusively> <!-- don't include subpackages -->
+                </parameter>
+              </configuration>
+            </execution>
+          </executions>
+        </plugin>
       </plugins>
     </pluginManagement>
     <plugins>