diff --git a/dev-support/ci/selective_ci_checks.sh b/dev-support/ci/selective_ci_checks.sh
index 24577653d6bc..f46d8fb49861 100755
--- a/dev-support/ci/selective_ci_checks.sh
+++ b/dev-support/ci/selective_ci_checks.sh
@@ -261,6 +261,7 @@ function get_count_integration_files() {
"^hadoop-ozone/dev-support/checks/integration.sh"
"^hadoop-ozone/dev-support/checks/junit.sh"
"^hadoop-ozone/integration-test"
+ "^hadoop-ozone/mini-cluster"
"^hadoop-ozone/fault-injection-test/mini-chaos-tests"
"src/test/java"
"src/test/resources"
diff --git a/hadoop-ozone/fault-injection-test/mini-chaos-tests/pom.xml b/hadoop-ozone/fault-injection-test/mini-chaos-tests/pom.xml
index ec72d7a37fc7..42562c02a031 100644
--- a/hadoop-ozone/fault-injection-test/mini-chaos-tests/pom.xml
+++ b/hadoop-ozone/fault-injection-test/mini-chaos-tests/pom.xml
@@ -65,6 +65,11 @@
ozone-manager
test
+
+ org.apache.ozone
+ ozone-mini-cluster
+ test
+
org.apache.ozone
ozone-recon
diff --git a/hadoop-ozone/integration-test/pom.xml b/hadoop-ozone/integration-test/pom.xml
index d01505badd64..bbd06127c645 100644
--- a/hadoop-ozone/integration-test/pom.xml
+++ b/hadoop-ozone/integration-test/pom.xml
@@ -281,6 +281,11 @@
test-jar
test
+
+ org.apache.ozone
+ ozone-mini-cluster
+ test
+
software.amazon.awssdk
s3
diff --git a/hadoop-ozone/mini-cluster/dev-support/findbugsExcludeFile.xml b/hadoop-ozone/mini-cluster/dev-support/findbugsExcludeFile.xml
new file mode 100644
index 000000000000..ee5ed59808bf
--- /dev/null
+++ b/hadoop-ozone/mini-cluster/dev-support/findbugsExcludeFile.xml
@@ -0,0 +1,16 @@
+
+
+
+
diff --git a/hadoop-ozone/mini-cluster/pom.xml b/hadoop-ozone/mini-cluster/pom.xml
new file mode 100644
index 000000000000..be6317d9344c
--- /dev/null
+++ b/hadoop-ozone/mini-cluster/pom.xml
@@ -0,0 +1,129 @@
+
+
+
+ 4.0.0
+
+ org.apache.ozone
+ ozone
+ 2.1.0-SNAPSHOT
+
+ ozone-mini-cluster
+ 2.1.0-SNAPSHOT
+ jar
+ Apache Ozone Mini Cluster
+ Apache Ozone Mini Cluster for Integration Tests
+
+
+
+ com.google.guava
+ guava
+
+
+ commons-io
+ commons-io
+
+
+ org.apache.ozone
+ hdds-common
+
+
+ org.apache.ozone
+ hdds-common
+ test-jar
+
+
+ org.apache.ozone
+ hdds-config
+
+
+ org.apache.ozone
+ hdds-container-service
+
+
+ org.apache.ozone
+ hdds-interface-client
+
+
+ org.apache.ozone
+ hdds-managed-rocksdb
+
+
+ org.apache.ozone
+ hdds-server-framework
+
+
+ org.apache.ozone
+ hdds-server-scm
+
+
+ org.apache.ozone
+ hdds-server-scm
+ test-jar
+
+
+ org.apache.ozone
+ hdds-test-utils
+ test-jar
+
+
+ org.apache.ozone
+ ozone-client
+
+
+ org.apache.ozone
+ ozone-common
+
+
+ org.apache.ozone
+ ozone-manager
+
+
+ org.apache.ozone
+ ozone-recon
+
+
+ org.apache.ozone
+ ozone-reconcodegen
+
+
+ org.apache.ratis
+ ratis-common
+
+
+ org.slf4j
+ slf4j-api
+
+
+
+
+
+
+ com.github.spotbugs
+ spotbugs-maven-plugin
+
+ ${basedir}/dev-support/findbugsExcludeFile.xml
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+
+ none
+
+
+
+
+
+
diff --git a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/MiniOzoneCluster.java b/hadoop-ozone/mini-cluster/src/main/java/org/apache/hadoop/ozone/MiniOzoneCluster.java
similarity index 100%
rename from hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/MiniOzoneCluster.java
rename to hadoop-ozone/mini-cluster/src/main/java/org/apache/hadoop/ozone/MiniOzoneCluster.java
diff --git a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/MiniOzoneClusterImpl.java b/hadoop-ozone/mini-cluster/src/main/java/org/apache/hadoop/ozone/MiniOzoneClusterImpl.java
similarity index 100%
rename from hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/MiniOzoneClusterImpl.java
rename to hadoop-ozone/mini-cluster/src/main/java/org/apache/hadoop/ozone/MiniOzoneClusterImpl.java
diff --git a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/MiniOzoneClusterProvider.java b/hadoop-ozone/mini-cluster/src/main/java/org/apache/hadoop/ozone/MiniOzoneClusterProvider.java
similarity index 100%
rename from hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/MiniOzoneClusterProvider.java
rename to hadoop-ozone/mini-cluster/src/main/java/org/apache/hadoop/ozone/MiniOzoneClusterProvider.java
diff --git a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/MiniOzoneHAClusterImpl.java b/hadoop-ozone/mini-cluster/src/main/java/org/apache/hadoop/ozone/MiniOzoneHAClusterImpl.java
similarity index 100%
rename from hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/MiniOzoneHAClusterImpl.java
rename to hadoop-ozone/mini-cluster/src/main/java/org/apache/hadoop/ozone/MiniOzoneHAClusterImpl.java
diff --git a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/UniformDatanodesFactory.java b/hadoop-ozone/mini-cluster/src/main/java/org/apache/hadoop/ozone/UniformDatanodesFactory.java
similarity index 100%
rename from hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/UniformDatanodesFactory.java
rename to hadoop-ozone/mini-cluster/src/main/java/org/apache/hadoop/ozone/UniformDatanodesFactory.java
diff --git a/hadoop-ozone/mini-cluster/src/main/java/org/apache/hadoop/ozone/package-info.java b/hadoop-ozone/mini-cluster/src/main/java/org/apache/hadoop/ozone/package-info.java
new file mode 100644
index 000000000000..812e63329539
--- /dev/null
+++ b/hadoop-ozone/mini-cluster/src/main/java/org/apache/hadoop/ozone/package-info.java
@@ -0,0 +1,21 @@
+/*
+ * 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.
+ */
+
+/**
+ * Mini cluster for running Ozone in a single JVM for tests.
+ */
+package org.apache.hadoop.ozone;
diff --git a/hadoop-ozone/pom.xml b/hadoop-ozone/pom.xml
index a73f3536dfd4..69cfcf48205c 100644
--- a/hadoop-ozone/pom.xml
+++ b/hadoop-ozone/pom.xml
@@ -37,6 +37,7 @@
integration-test
interface-client
interface-storage
+ mini-cluster
ozone-manager
ozonefs
ozonefs-common
@@ -266,6 +267,11 @@
${ozone.version}
test-jar
+
+ org.apache.ozone
+ ozone-mini-cluster
+ ${ozone.version}
+
org.apache.ozone
ozone-recon