diff --git a/.gitignore b/.gitignore
index 28d26ec7d3..2bdc710987 100644
--- a/.gitignore
+++ b/.gitignore
@@ -73,6 +73,8 @@ fe/fe-core/gen/
fe/fe-core/src/main/resources/static/
fe/fe-core/src/main/antlr4/org/apache/doris/nereids/DorisLexer.tokens
fe/fe-core/src/main/antlr4/org/apache/doris/nereids/gen/
+fe/fe-core/src/main/java/org/apache/doris/thrift
+fe/fe-core/src/main/java/org/apache/parquet
# BE
be/build*/
@@ -101,3 +103,4 @@ lru_cache_test
/conf/log4j2-spring.xml
/fe/fe-core/src/test/resources/real-help-resource.zip
+/ui/dist
\ No newline at end of file
diff --git a/build.sh b/build.sh
index e9701fcac0..a7b9080aba 100755
--- a/build.sh
+++ b/build.sh
@@ -391,6 +391,9 @@ echo "Build generated code"
cd "${DORIS_HOME}/gensrc"
# DO NOT using parallel make(-j) for gensrc
make
+rm -rf "${DORIS_HOME}/fe/fe-core/src/main/java/org/apache/doris/thrift ${DORIS_HOME}/fe/fe-core/src/main/java/org/apache/parquet"
+cp -r "build/gen_java/org/apache/doris/thrift" "${DORIS_HOME}/fe/fe-core/src/main/java/org/apache/doris"
+cp -r "build/gen_java/org/apache/parquet" "${DORIS_HOME}/fe/fe-core/src/main/java/org/apache/"
# Assesmble FE modules
FE_MODULES=''
diff --git a/fe/pom.xml b/fe/pom.xml
index b53353fd9a..af035ddd0b 100644
--- a/fe/pom.xml
+++ b/fe/pom.xml
@@ -133,6 +133,10 @@ under the License.
true
false
true
+
+ **/apache/doris/thrift/*,
+ **/apache/parquet/**/*
+
diff --git a/gensrc/thrift/Makefile b/gensrc/thrift/Makefile
index 3d61213e20..e2d81952d5 100644
--- a/gensrc/thrift/Makefile
+++ b/gensrc/thrift/Makefile
@@ -29,13 +29,19 @@ GEN_OBJECTS = $(patsubst ${BUILD_DIR}/thrift/%.thrift, ${BUILD_DIR}/gen_cpp/%_ty
all: ${GEN_OBJECTS} ${OBJECTS}
.PHONY: all
+$(shell mkdir -p ${BUILD_DIR}/gen_java)
+
THRIFT_CPP_ARGS = -I ${CURDIR} -I ${BUILD_DIR}/thrift/ --gen cpp -out ${BUILD_DIR}/gen_cpp --allow-64bit-consts -strict
+THRIFT_JAVA_ARGS = -I ${CURDIR} -I ${BUILD_DIR}/thrift/ --gen java:fullcamel -out ${BUILD_DIR}/gen_java --allow-64bit-consts -strict
${BUILD_DIR}/gen_cpp:
mkdir -p $@
# handwrite thrift
${BUILD_DIR}/gen_cpp/%_types.cpp: ${CURDIR}/%.thrift | ${BUILD_DIR}/gen_cpp
${THRIFT} ${THRIFT_CPP_ARGS} $<
+ ${THRIFT} ${THRIFT_JAVA_ARGS} $<
+
# generated thrift
${BUILD_DIR}/gen_cpp/%_types.cpp: ${BUILD_DIR}/thrift/%.thrift | ${BUILD_DIR}/gen_cpp
${THRIFT} ${THRIFT_CPP_ARGS} $<
+ ${THRIFT} ${THRIFT_JAVA_ARGS} $<