diff --git a/dev-support/.scalafmt.conf b/dev-support/.scalafmt.conf
new file mode 100644
index 00000000..0b8ff0e7
--- /dev/null
+++ b/dev-support/.scalafmt.conf
@@ -0,0 +1,33 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+# Template based off apache spark: https://github.com/apache/spark/blob/master/dev/.scalafmt.conf
+align = none
+align.openParenDefnSite = false
+align.openParenCallSite = false
+align.tokens = []
+importSelectors = "singleLine"
+optIn = {
+ configStyleArguments = false
+}
+danglingParentheses.preset = false
+docstrings.style = Asterisk
+# See https://github.com/scalameta/scalafmt/issues/1387
+docstrings.wrap = no
+maxColumn = 100
+runner.dialect = scala212
+version = 3.7.12
diff --git a/dev-support/eclipse.importorder b/dev-support/eclipse.importorder
new file mode 100644
index 00000000..68f4e8b2
--- /dev/null
+++ b/dev-support/eclipse.importorder
@@ -0,0 +1,19 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#Organize Import Order
+3=org.apache.hadoop.hbase.shaded
+2=org.apache.hbase.thirdparty
+1=
+0=\#
diff --git a/dev-support/hbase_eclipse_formatter.xml b/dev-support/hbase_eclipse_formatter.xml
new file mode 100644
index 00000000..99000a62
--- /dev/null
+++ b/dev-support/hbase_eclipse_formatter.xml
@@ -0,0 +1,418 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/dev-support/license-header b/dev-support/license-header
new file mode 100644
index 00000000..2379ddac
--- /dev/null
+++ b/dev-support/license-header
@@ -0,0 +1,17 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
diff --git a/pom.xml b/pom.xml
index f06c147e..56b2c30e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -151,6 +151,7 @@
1.2.17
1.2.25
8.45.1
+ 2.27.2
3.2.1
2.5.0
3.0.0
@@ -674,6 +675,130 @@
+
+ com.diffplug.spotless
+ spotless-maven-plugin
+ ${spotless.version}
+
+
+
+
+ **/generated/*
+ **/package-info.java
+
+
+
+ Remove unhelpful javadoc stubs
+ (?m)^ *\* *@(?:param|throws|return) *\w* *\n
+
+
+
+
+ Purge single returns tag multi line
+ (?m)^ */\*\*\n *\* *@return *(.*) *\n *\*/$
+ /** Returns $1 */
+
+
+ Purge single returns tag single line
+ ^ */\*\* *@return *(.*) *\*/$
+ /** Returns $1 */
+
+
+
+ ${session.executionRootDirectory}/dev-support/hbase_eclipse_formatter.xml
+
+
+ ${session.executionRootDirectory}/dev-support/eclipse.importorder
+
+
+
+
+
+
+
+
+ src/main/scala/**/*.scala
+ src/test/scala/**/*.scala
+ src/main/scala/**/*.sc
+ src/test/scala/**/*.sc
+
+
+
+ 3.7.12
+ ${session.executionRootDirectory}/dev-support/.scalafmt.conf
+
+
+
+
+ false
+
+
+
+
+
+
+
+ **/*.xml
+ **/*.sh
+ **/*.py
+ **/Jenkinsfile*
+ **/*.md
+ *.md
+ **/*.txt
+ *.txt
+
+
+ **/target/**
+ **/dependency-reduced-pom.xml
+
+
+
+
+
+
+
+
+ src/main/java/**/*.java
+ src/test/java/**/*.java
+ src/main/scala/**/*.scala
+ src/test/scala/**/*.scala
+ src/main/scala/**/*.sc
+ src/test/scala/**/*.sc
+
+
+ **/generated/*
+ **/package-info.java
+
+
+ ${session.executionRootDirectory}/dev-support/license-header
+ package
+
+
+
+
+