diff --git a/dev/github/Dockerfile-jdk11 b/dev/github/Dockerfile-jdk11
index b2d5b57b3520..25669ffcb650 100644
--- a/dev/github/Dockerfile-jdk11
+++ b/dev/github/Dockerfile-jdk11
@@ -153,3 +153,5 @@ RUN ARCH=$(dpkg --print-architecture) && \
wget --quiet https://releases.hashicorp.com/terraform/1.0.1/terraform_1.0.1_linux_${ARCH}.zip && \
unzip -o ./terraform_1.0.1_linux_${ARCH}.zip -d /usr/local/bin/ && \
rm terraform_1.0.1_linux_${ARCH}.zip
+# Rust toolchains for native components
+RUN apt-get install -y rust-all
diff --git a/dev/github/Dockerfile-jdk17 b/dev/github/Dockerfile-jdk17
index 2f1a2d3c3d1c..8e5fe5c177a6 100644
--- a/dev/github/Dockerfile-jdk17
+++ b/dev/github/Dockerfile-jdk17
@@ -158,3 +158,5 @@ RUN ARCH=$(dpkg --print-architecture) && \
wget --quiet https://releases.hashicorp.com/terraform/1.0.1/terraform_1.0.1_linux_${ARCH}.zip && \
unzip -o ./terraform_1.0.1_linux_${ARCH}.zip -d /usr/local/bin/ && \
rm terraform_1.0.1_linux_${ARCH}.zip
+# Rust toolchains for native components
+RUN apt-get install -y rust-all
diff --git a/dev/github/Dockerfile-jdk8 b/dev/github/Dockerfile-jdk8
index 723cce9a9631..55b22523aebb 100644
--- a/dev/github/Dockerfile-jdk8
+++ b/dev/github/Dockerfile-jdk8
@@ -36,3 +36,6 @@ RUN ARCH=$(dpkg --print-architecture) && \
wget --quiet https://releases.hashicorp.com/terraform/1.0.1/terraform_1.0.1_linux_${ARCH}.zip && \
unzip -o ./terraform_1.0.1_linux_${ARCH}.zip -d /usr/local/bin/ && \
rm terraform_1.0.1_linux_${ARCH}.zip
+
+# Rust toolchains for native components
+RUN apt-get install -y rust-all
diff --git a/dev/github/run_tests.sh b/dev/github/run_tests.sh
index 4a4a6914948f..94aab481c2e6 100755
--- a/dev/github/run_tests.sh
+++ b/dev/github/run_tests.sh
@@ -38,7 +38,7 @@ PATH_BACKUP=${PATH}
JAVA_HOME=/usr/local/openjdk-8
PATH=$JAVA_HOME/bin:$PATH
mvn -Duser.home=/home/jenkins -T 4C clean install -Dfindbugs.skip -Dcheckstyle.skip -DskipTests -Dmaven.javadoc.skip \
--Dlicense.skip -Dsort.skip ${mvn_args}
+-Dlicense.skip -Dsort.skip -Pnative-components ${mvn_args}
# Set things up so that the current user has a real name and can authenticate.
myuid=$(id -u)
@@ -56,4 +56,5 @@ fi
# Run tests
mvn -Duser.home=/home/jenkins test -Dmaven.main.skip -Dskip.protoc=true -Dmaven.javadoc.skip -Dlicense.skip=true \
--Dcheckstyle.skip=true -Dfindbugs.skip=true -Dsort.skip -Dsurefire.forkCount=${ALLUXIO_FORK_COUNT} ${mvn_args}
+-Dcheckstyle.skip=true -Dfindbugs.skip=true -Dsort.skip -Pnative-components -Dsurefire.forkCount=${ALLUXIO_FORK_COUNT} \
+${mvn_args}
diff --git a/native/rust/archetype/pom.xml b/native/rust/archetype/pom.xml
index 6169634e5754..ab778125e478 100644
--- a/native/rust/archetype/pom.xml
+++ b/native/rust/archetype/pom.xml
@@ -49,18 +49,42 @@
+
+
+ true
+ src/test/resources
+
+ projects/test/archetype.properties
+
+
+
+ false
+ src/test/resources
+
+ projects/test/archetype.properties
+
+
+
org.apache.maven.plugins
maven-archetype-plugin
-
-
- org.apache.maven.plugins
- maven-checkstyle-plugin
-
- true
-
+
+
+ default-integration-test
+
+ integration-test
+
+
+
+ false
+
+ ${build.path}
+
+
+
+
org.apache.maven.plugins
diff --git a/native/rust/archetype/src/test/resources/projects/test/archetype.properties b/native/rust/archetype/src/test/resources/projects/test/archetype.properties
new file mode 100644
index 000000000000..208a04d24fdd
--- /dev/null
+++ b/native/rust/archetype/src/test/resources/projects/test/archetype.properties
@@ -0,0 +1,18 @@
+#
+# The Alluxio Open Foundation licenses this work under the Apache License, version 2.0
+# (the "License"). You may not use this work except in compliance with the License, which is
+# available at www.apache.org/licenses/LICENSE-2.0
+#
+# This software is distributed on an "AS IS" basis, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
+# either express or implied, as more fully set forth in the License.
+#
+# See the NOTICE file distributed with this work for information regarding copyright ownership.
+#
+
+package=alluxio
+groupId=org.alluxio
+artifactId=alluxio-rust-example
+version=${project.version}
+cargo_crate_name=example
+cargo_crate_type=cdylib
+toolchain_version=${toolchain.version}
diff --git a/native/rust/archetype/src/test/resources/projects/test/goal.txt b/native/rust/archetype/src/test/resources/projects/test/goal.txt
new file mode 100644
index 000000000000..0b5987362fe3
--- /dev/null
+++ b/native/rust/archetype/src/test/resources/projects/test/goal.txt
@@ -0,0 +1 @@
+verify
diff --git a/pom.xml b/pom.xml
index 691ddadb9530..203122de2ac9 100644
--- a/pom.xml
+++ b/pom.xml
@@ -188,7 +188,6 @@
common
dora
webui
- native
@@ -1739,5 +1738,12 @@
+
+
+ native-components
+
+ native
+
+