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

gabor pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/parquet-mr.git


The following commit(s) were added to refs/heads/master by this push:
     new ce55c9b  PARQUET-1703: Update API compatibility check (#709)
ce55c9b is described below

commit ce55c9b2c3db49bdf0c7c4f4450a00ba51dfcc7b
Author: Gabor Szadovszky <[email protected]>
AuthorDate: Tue Jan 7 09:58:08 2020 +0100

    PARQUET-1703: Update API compatibility check (#709)
---
 dev/finalize-release       |  1 +
 parquet-benchmarks/pom.xml |  5 ---
 parquet-cli/pom.xml        |  5 ---
 parquet-tools/pom.xml      |  1 -
 pom.xml                    | 95 ++++++++++++++++++++++++----------------------
 5 files changed, 51 insertions(+), 56 deletions(-)

diff --git a/dev/finalize-release b/dev/finalize-release
index 503201d..e06524a 100755
--- a/dev/finalize-release
+++ b/dev/finalize-release
@@ -35,6 +35,7 @@ new_development_version="$3-SNAPSHOT"
 
 git tag -am "Release Apache Parquet $release_version" "$release_tag" "$rc_tag"
 mvn --batch-mode release:update-versions 
-DdevelopmentVersion="$new_development_version"
+mvn -pl . versions:set-property -Dproperty=previous.version 
-DnewVersion="$release_version"
 git commit -am 'Prepare for next development iteration'
 
 echo
diff --git a/parquet-benchmarks/pom.xml b/parquet-benchmarks/pom.xml
index fe72f3b..5e33057 100644
--- a/parquet-benchmarks/pom.xml
+++ b/parquet-benchmarks/pom.xml
@@ -83,11 +83,6 @@
 
   <build>
     <plugins>
-      <!-- This module disables semver checks because it is not a public API.
-      <plugin>
-        <artifactId>maven-enforcer-plugin</artifactId>
-      </plugin>
-      -->
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-compiler-plugin</artifactId>
diff --git a/parquet-cli/pom.xml b/parquet-cli/pom.xml
index 3d2202b..809b1f7 100644
--- a/parquet-cli/pom.xml
+++ b/parquet-cli/pom.xml
@@ -95,11 +95,6 @@
 
   <build>
     <plugins>
-      <!-- This module disables semver checks because it is not a public API.
-      <plugin>
-        <artifactId>maven-enforcer-plugin</artifactId>
-      </plugin>
-      -->
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-jar-plugin</artifactId>
diff --git a/parquet-tools/pom.xml b/parquet-tools/pom.xml
index 196f8c2..3da1c65 100644
--- a/parquet-tools/pom.xml
+++ b/parquet-tools/pom.xml
@@ -81,7 +81,6 @@
 
   <build>
     <plugins>
-      <!--We do not turn on semver checking for parquet-tools, since it's not 
considered as an API-->
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-jar-plugin</artifactId>
diff --git a/pom.xml b/pom.xml
index e837d8a..719655f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -77,12 +77,13 @@
     <jackson.package>com.fasterxml.jackson</jackson.package>
     <jackson.version>2.9.10</jackson.version>
     <jackson-databind.version>2.9.10</jackson-databind.version>
+    <japicmp.version>0.14.2</japicmp.version>
     <shade.prefix>shaded.parquet</shade.prefix>
     <hadoop.version>2.7.3</hadoop.version>
     <cascading.version>2.7.1</cascading.version>
     <cascading3.version>3.1.2</cascading3.version>
     <parquet.format.version>2.7.0</parquet.format.version>
-    <previous.version>1.7.0</previous.version>
+    <previous.version>1.11.0</previous.version>
     <thrift.executable>thrift</thrift.executable>
     <format.thrift.executable>thrift</format.thrift.executable>
     <scala.version>2.12.8</scala.version>
@@ -235,50 +236,6 @@
          </dependencies>
          <executions>
            <execution>
-             <id>check</id>
-             <phase>verify</phase>
-             <goals>
-               <goal>enforce</goal>
-             </goals>
-             <configuration>
-               <rules>
-                 <requireBackwardCompatibility 
implementation="org.semver.enforcer.RequireSemanticVersioningConformance">
-                   <dumpDetails>true</dumpDetails>
-                   <previousVersion>${previous.version}</previousVersion>
-                   <excludes>
-                     <exclude>org/apache/parquet/hadoop/util/**</exclude>
-                     <exclude>org/apache/parquet/thrift/projection/**</exclude>
-                     
<exclude>org/apache/parquet/thrift/ThriftSchemaConverter</exclude>
-                     <exclude>org/apache/parquet/filter2/**</exclude>
-                     <exclude>org/apache/parquet/column/**</exclude>
-                     
<exclude>org/apache/parquet/hadoop/ParquetInputSplit</exclude>
-                     
<exclude>org/apache/parquet/hadoop/CodecFactory**</exclude>
-                     <exclude>shaded/**</exclude> <!-- shaded by parquet -->
-                     
<exclude>org/apache/parquet/it/unimi/dsi/fastutil/**</exclude> <!-- Another 
shaded dependency from parquet-column -->
-                     <exclude>org/apache/parquet/benchmarks/**</exclude>
-                     <exclude>org/openjdk/**</exclude>
-                     <!-- temporary exclusions for false-positives -->
-                     <exclude>org/apache/parquet/Version</exclude>
-                     <exclude>org/apache/parquet/schema/**</exclude> <!-- 
methods moved to new superclass -->
-                     
<exclude>org/apache/parquet/thrift/ThriftSchemaConvertVisitor</exclude> <!-- 
not public -->
-                     
<exclude>org/apache/parquet/avro/AvroParquetReader</exclude> <!-- returns 
subclass of old return class -->
-                     
<exclude>org/apache/parquet/avro/SpecificDataSupplier</exclude> <!-- made 
public -->
-                     
<exclude>org/apache/parquet/io/ColumnIOFactory$ColumnIOCreatorVisitor</exclude> 
<!-- removed non-API class -->
-                     
<exclude>org/apache/parquet/io/ColumnIOFactory/**</exclude> <!-- removed 
non-API class and methods-->
-                     
<exclude>org/apache/parquet/hadoop/codec/SnappyCompressor</exclude> <!-- added 
synchronized modifier -->
-                     <exclude>org/apache/parquet/bytes/BytesInput</exclude> 
<!-- moved to parquet-common -->
-                     
<exclude>org/apache/parquet/bytes/CapacityByteArrayOutputStream</exclude> <!-- 
moved to parquet-common -->
-                     
<exclude>org/apache/parquet/bytes/ConcatenatingByteArrayCollector</exclude> 
<!-- moved to parquet-common -->
-                     
<exclude>org/apache/parquet/bytes/LittleEndianDataInputStream</exclude> <!-- 
moved to parquet-common -->
-                     
<exclude>org/apache/parquet/bytes/LittleEndianDataOutputStream</exclude> <!-- 
moved to parquet-common -->
-                     
<exclude>org/apache/parquet/hadoop/metadata/CompressionCodecName</exclude> <!-- 
moved to parquet-common -->
-                     
<exclude>org/apache/parquet/hadoop/codec/CompressionCodecNotSupportedException</exclude>
 <!-- moved to parquet-common -->
-                   </excludes>
-                 </requireBackwardCompatibility>
-               </rules>
-             </configuration>
-           </execution>
-           <execution>
             <id>enforce-banned-dependencies</id>
             <goals>
               <goal>enforce</goal>
@@ -503,6 +460,54 @@
           </excludes>
         </configuration>
       </plugin>
+
+      <plugin>
+        <groupId>com.github.siom79.japicmp</groupId>
+        <artifactId>japicmp-maven-plugin</artifactId>
+        <version>${japicmp.version}</version>
+        <configuration>
+          <parameter>
+            <oldVersionPattern>${previous.version}</oldVersionPattern>
+            
<breakBuildBasedOnSemanticVersioning>true</breakBuildBasedOnSemanticVersioning>
+            <onlyModified>true</onlyModified>
+            <overrideCompatibilityChangeParameters>
+              <!-- Adding a new method with default implementation to an 
interface should be a compatible change.
+                That's why they invented it. -->
+              <overrideCompatibilityChangeParameter>
+                <compatibilityChange>METHOD_NEW_DEFAULT</compatibilityChange>
+                <semanticVersionLevel>MINOR</semanticVersionLevel>
+                <binaryCompatible>true</binaryCompatible>
+                <sourceCompatible>true</sourceCompatible>
+              </overrideCompatibilityChangeParameter>
+            </overrideCompatibilityChangeParameters>
+            <excludeModules>
+              <!-- Excluding the following modules because they are not part 
of the parquet public API -->
+              <excludeModule>parquet-benchmarks</excludeModule>
+              <excludeModule>parquet-cli</excludeModule>
+              <excludeModule>parquet-tools</excludeModule>
+              <excludeModule>parquet-format-structures</excludeModule>
+
+              <!-- Excluding the following modules because bundles do not 
contain any java classes while they still fail the
+                compatibility check because of missing dependencies -->
+              <excludeModule>parquet-hadoop-bundle</excludeModule>
+              <excludeModule>parquet-hive-bundle</excludeModule>
+              <excludeModule>parquet-pig-bundle</excludeModule>
+            </excludeModules>
+            <excludes>
+              <exclude>${shade.prefix}</exclude>
+            </excludes>
+          </parameter>
+        </configuration>
+        <executions>
+          <execution>
+            <phase>verify</phase>
+            <goals>
+              <goal>cmp</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+
     </plugins>
   </build>
 

Reply via email to