diff --git a/apollo-assembly/pom.xml b/apollo-assembly/pom.xml
index a655c61a2e4..24acf30cb11 100644
--- a/apollo-assembly/pom.xml
+++ b/apollo-assembly/pom.xml
@@ -33,4 +33,15 @@
 			<scope>test</scope>
 		</dependency>
 	</dependencies>
+	<build>
+		<plugins>
+			<plugin>
+				<groupId>org.springframework.boot</groupId>
+				<artifactId>spring-boot-maven-plugin</artifactId>
+				<configuration>
+					<executable>true</executable>
+				</configuration>
+			</plugin>
+		</plugins>
+	</build>
 </project>
diff --git a/apollo-assembly/src/main/java/com/ctrip/framework/apollo/assembly/ApolloApplication.java b/apollo-assembly/src/main/java/com/ctrip/framework/apollo/assembly/ApolloApplication.java
index 85b6e984a35..3a8a8053ca6 100644
--- a/apollo-assembly/src/main/java/com/ctrip/framework/apollo/assembly/ApolloApplication.java
+++ b/apollo-assembly/src/main/java/com/ctrip/framework/apollo/assembly/ApolloApplication.java
@@ -10,6 +10,7 @@
 import org.springframework.cloud.context.scope.refresh.RefreshScope;
 import org.springframework.context.ConfigurableApplicationContext;
 
+import com.ctrip.framework.apollo.portal.PortalApplication;
 import com.ctrip.framework.apollo.adminservice.AdminServiceApplication;
 import com.ctrip.framework.apollo.configservice.ConfigServiceApplication;
 
@@ -47,6 +48,16 @@ public static void main(String[] args) throws Exception {
               .sources(RefreshScope.class).run(args);
       logger.info(adminContext.getId() + " isActive: " + adminContext.isActive());
     }
+
+    /**
+     * Portal
+     */
+    if (commonContext.getEnvironment().containsProperty("portal")) {
+      ConfigurableApplicationContext portalContext =
+          new SpringApplicationBuilder(PortalApplication.class).parent(commonContext)
+              .sources(RefreshScope.class).run(args);
+      logger.info(portalContext.getId() + " isActive: " + portalContext.isActive());
+    }
   }
 
 }
diff --git a/apollo-assembly/src/test/java/com/ctrip/framework/apollo/assembly/LocalApolloApplication.java b/apollo-assembly/src/test/java/com/ctrip/framework/apollo/assembly/LocalApolloApplication.java
index 31949683aaf..7a9d9554c6a 100644
--- a/apollo-assembly/src/test/java/com/ctrip/framework/apollo/assembly/LocalApolloApplication.java
+++ b/apollo-assembly/src/test/java/com/ctrip/framework/apollo/assembly/LocalApolloApplication.java
@@ -12,7 +12,7 @@
 
 import com.ctrip.framework.apollo.adminservice.AdminServiceApplication;
 import com.ctrip.framework.apollo.configservice.ConfigServiceApplication;
-import com.ctrip.framework.apollo.PortalApplication;
+import com.ctrip.framework.apollo.portal.PortalApplication;
 
 @SpringBootApplication(exclude = {DataSourceAutoConfiguration.class,
     HibernateJpaAutoConfiguration.class})
diff --git a/apollo-portal/src/main/java/com/ctrip/framework/apollo/openapi/PortalOpenApiConfig.java b/apollo-portal/src/main/java/com/ctrip/framework/apollo/openapi/PortalOpenApiConfig.java
new file mode 100644
index 00000000000..505be15c646
--- /dev/null
+++ b/apollo-portal/src/main/java/com/ctrip/framework/apollo/openapi/PortalOpenApiConfig.java
@@ -0,0 +1,12 @@
+package com.ctrip.framework.apollo.openapi;
+
+import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.context.annotation.Configuration;
+
+@EnableAutoConfiguration
+@Configuration
+@ComponentScan(basePackageClasses = PortalOpenApiConfig.class)
+public class PortalOpenApiConfig {
+
+}
diff --git a/apollo-portal/src/main/java/com/ctrip/framework/apollo/PortalApplication.java b/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/PortalApplication.java
similarity index 83%
rename from apollo-portal/src/main/java/com/ctrip/framework/apollo/PortalApplication.java
rename to apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/PortalApplication.java
index aa20abe040f..51233c3fd52 100644
--- a/apollo-portal/src/main/java/com/ctrip/framework/apollo/PortalApplication.java
+++ b/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/PortalApplication.java
@@ -1,6 +1,7 @@
-package com.ctrip.framework.apollo;
+package com.ctrip.framework.apollo.portal;
 
 import com.ctrip.framework.apollo.common.ApolloCommonConfig;
+import com.ctrip.framework.apollo.openapi.PortalOpenApiConfig;
 
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.actuate.system.ApplicationPidFileWriter;
@@ -16,7 +17,8 @@
 @Configuration
 @EnableAutoConfiguration
 @EnableTransactionManagement
-@ComponentScan(basePackageClasses = {ApolloCommonConfig.class, PortalApplication.class})
+@ComponentScan(basePackageClasses = {ApolloCommonConfig.class,
+    PortalApplication.class, PortalOpenApiConfig.class})
 public class PortalApplication {
 
   public static void main(String[] args) throws Exception {
diff --git a/apollo-portal/src/test/java/com/ctrip/framework/apollo/portal/AbstractIntegrationTest.java b/apollo-portal/src/test/java/com/ctrip/framework/apollo/portal/AbstractIntegrationTest.java
index 7f1da023232..c2d79c596e6 100644
--- a/apollo-portal/src/test/java/com/ctrip/framework/apollo/portal/AbstractIntegrationTest.java
+++ b/apollo-portal/src/test/java/com/ctrip/framework/apollo/portal/AbstractIntegrationTest.java
@@ -1,8 +1,6 @@
 package com.ctrip.framework.apollo.portal;
 
 
-import com.ctrip.framework.apollo.PortalApplication;
-
 import org.junit.runner.RunWith;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.boot.test.SpringApplicationConfiguration;