diff --git a/boot/pom.xml b/boot/pom.xml
index 15423fcd3..1b2d39b70 100644
--- a/boot/pom.xml
+++ b/boot/pom.xml
@@ -12,6 +12,11 @@
arthas-boot
+
+ com.taobao.arthas
+ arthas-common
+ ${project.version}
+
com.alibaba.middleware
cli
diff --git a/boot/src/main/java/com/taobao/arthas/boot/Bootstrap.java b/boot/src/main/java/com/taobao/arthas/boot/Bootstrap.java
index 218faa647..d1f566462 100644
--- a/boot/src/main/java/com/taobao/arthas/boot/Bootstrap.java
+++ b/boot/src/main/java/com/taobao/arthas/boot/Bootstrap.java
@@ -18,6 +18,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.xml.sax.SAXException;
+import com.taobao.arthas.common.SocketUtils;
import com.taobao.middleware.cli.CLI;
import com.taobao.middleware.cli.CommandLine;
import com.taobao.middleware.cli.UsageMessageFormatter;
diff --git a/boot/src/main/java/com/taobao/arthas/boot/ProcessUtils.java b/boot/src/main/java/com/taobao/arthas/boot/ProcessUtils.java
index dab263a05..8252dbb9d 100644
--- a/boot/src/main/java/com/taobao/arthas/boot/ProcessUtils.java
+++ b/boot/src/main/java/com/taobao/arthas/boot/ProcessUtils.java
@@ -16,6 +16,8 @@ import java.util.Scanner;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import com.taobao.arthas.common.ExecutingCommand;
+
/**
*
* @author hengyunabc 2018-11-06
diff --git a/common/pom.xml b/common/pom.xml
new file mode 100644
index 000000000..5161fb624
--- /dev/null
+++ b/common/pom.xml
@@ -0,0 +1,29 @@
+
+
+ 4.0.0
+
+ com.taobao.arthas
+ arthas-all
+ 3.0.5-SNAPSHOT
+
+ arthas-common
+ arthas-common
+
+
+
+ arthas-common
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+
+ 1.6
+ 1.6
+ UTF-8
+ true
+
+
+
+
+
+
diff --git a/core/src/main/java/com/taobao/arthas/core/util/AnsiLog.java b/common/src/main/java/com/taobao/arthas/common/AnsiLog.java
similarity index 97%
rename from core/src/main/java/com/taobao/arthas/core/util/AnsiLog.java
rename to common/src/main/java/com/taobao/arthas/common/AnsiLog.java
index af4205454..c441feafe 100644
--- a/core/src/main/java/com/taobao/arthas/core/util/AnsiLog.java
+++ b/common/src/main/java/com/taobao/arthas/common/AnsiLog.java
@@ -1,4 +1,4 @@
-package com.taobao.arthas.core.util;
+package com.taobao.arthas.common;
import java.util.regex.Matcher;
/**
diff --git a/boot/src/main/java/com/taobao/arthas/boot/ExecutingCommand.java b/common/src/main/java/com/taobao/arthas/common/ExecutingCommand.java
similarity index 97%
rename from boot/src/main/java/com/taobao/arthas/boot/ExecutingCommand.java
rename to common/src/main/java/com/taobao/arthas/common/ExecutingCommand.java
index 24cfc111a..a17ea2fd7 100644
--- a/boot/src/main/java/com/taobao/arthas/boot/ExecutingCommand.java
+++ b/common/src/main/java/com/taobao/arthas/common/ExecutingCommand.java
@@ -1,4 +1,4 @@
-package com.taobao.arthas.boot;
+package com.taobao.arthas.common;
import java.io.BufferedReader;
import java.io.IOException;
@@ -10,6 +10,8 @@ import java.util.List;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import com.taobao.arthas.boot.IOUtils;
+
/**
* A class for executing on the command line and returning the result of
* execution.
diff --git a/boot/src/main/java/com/taobao/arthas/boot/OSUtils.java b/common/src/main/java/com/taobao/arthas/common/OSUtils.java
similarity index 96%
rename from boot/src/main/java/com/taobao/arthas/boot/OSUtils.java
rename to common/src/main/java/com/taobao/arthas/common/OSUtils.java
index 36581f819..c5fe3c85b 100644
--- a/boot/src/main/java/com/taobao/arthas/boot/OSUtils.java
+++ b/common/src/main/java/com/taobao/arthas/common/OSUtils.java
@@ -1,4 +1,4 @@
-package com.taobao.arthas.boot;
+package com.taobao.arthas.common;
/**
*
diff --git a/boot/src/main/java/com/taobao/arthas/boot/PlatformEnum.java b/common/src/main/java/com/taobao/arthas/common/PlatformEnum.java
similarity index 87%
rename from boot/src/main/java/com/taobao/arthas/boot/PlatformEnum.java
rename to common/src/main/java/com/taobao/arthas/common/PlatformEnum.java
index 966023f76..49e1e6829 100644
--- a/boot/src/main/java/com/taobao/arthas/boot/PlatformEnum.java
+++ b/common/src/main/java/com/taobao/arthas/common/PlatformEnum.java
@@ -1,4 +1,4 @@
-package com.taobao.arthas.boot;
+package com.taobao.arthas.common;
/**
* Enum of supported operating systems.
diff --git a/boot/src/main/java/com/taobao/arthas/boot/SocketUtils.java b/common/src/main/java/com/taobao/arthas/common/SocketUtils.java
similarity index 98%
rename from boot/src/main/java/com/taobao/arthas/boot/SocketUtils.java
rename to common/src/main/java/com/taobao/arthas/common/SocketUtils.java
index 4b95d8cb7..18184924a 100644
--- a/boot/src/main/java/com/taobao/arthas/boot/SocketUtils.java
+++ b/common/src/main/java/com/taobao/arthas/common/SocketUtils.java
@@ -1,4 +1,4 @@
-package com.taobao.arthas.boot;
+package com.taobao.arthas.common;
import java.net.InetAddress;
import java.net.ServerSocket;
diff --git a/core/pom.xml b/core/pom.xml
index 997595b73..e85e712fd 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -64,6 +64,11 @@
+
+ com.taobao.arthas
+ arthas-common
+ ${project.version}
+
org.ow2.asm
asm
diff --git a/core/src/main/java/com/taobao/arthas/core/Arthas.java b/core/src/main/java/com/taobao/arthas/core/Arthas.java
index 141636614..017caf470 100644
--- a/core/src/main/java/com/taobao/arthas/core/Arthas.java
+++ b/core/src/main/java/com/taobao/arthas/core/Arthas.java
@@ -2,8 +2,8 @@ package com.taobao.arthas.core;
import com.sun.tools.attach.VirtualMachine;
import com.sun.tools.attach.VirtualMachineDescriptor;
+import com.taobao.arthas.common.AnsiLog;
import com.taobao.arthas.core.config.Configure;
-import com.taobao.arthas.core.util.AnsiLog;
import com.taobao.middleware.cli.CLI;
import com.taobao.middleware.cli.CLIs;
import com.taobao.middleware.cli.CommandLine;
diff --git a/pom.xml b/pom.xml
index 3dcae6f6c..73466d7b8 100644
--- a/pom.xml
+++ b/pom.xml
@@ -56,6 +56,7 @@
spy
+ common
core
agent
client