getParams(FullHttpRequest request) {
+ try {
+ return new RequestParser(request).parse();
+ } catch (Exception e) {
+ logger.error("从请求中获取参数,报错",e);
+ }
+ return new HashMap<>();
+ }
+
+ /**
+ * 获取JWT管理类对象
+ * @return jwt
+ */
+ public JwtManager getJwtManager(){
+ return JwtManager.getJwtManager();
+ }
+
+ /**
+ * 获取客户端IP
+ * @return ip
+ */
+ public String getIp() {
+ String clientIP = String.valueOf(httpRequest.headers().get("X-Forwarded-For"));
+ if (clientIP == null || clientIP.equals("null")) {
+ InetSocketAddress insocket = (InetSocketAddress) this.ctx.channel().remoteAddress();
+ clientIP = insocket.getAddress().getHostAddress();
+ }
+ return clientIP;
+ }
+}
diff --git a/mars-server/src/main/java/com/yuyenews/easy/server/request/HttpResponse.java b/mars-server/src/main/java/com/yuyenews/easy/server/request/HttpResponse.java
new file mode 100644
index 0000000..d9ca08d
--- /dev/null
+++ b/mars-server/src/main/java/com/yuyenews/easy/server/request/HttpResponse.java
@@ -0,0 +1,199 @@
+package com.yuyenews.easy.server.request;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.yuyenews.core.logger.GogeLogger;
+import com.yuyenews.core.util.ConfigUtil;
+import com.yuyenews.core.util.FileUtil;
+import com.yuyenews.core.util.MesUtil;
+import io.netty.buffer.Unpooled;
+import io.netty.channel.ChannelFutureListener;
+import io.netty.channel.ChannelHandlerContext;
+import io.netty.handler.codec.http.*;
+import io.netty.util.CharsetUtil;
+
+import java.awt.image.BufferedImage;
+import java.io.File;
+import java.io.InputStream;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * 响应对象,对netty原生response的扩展
+ *
+ * 暂时没有提供response的支持
+ *
+ * @author yuye
+ */
+public class HttpResponse {
+
+ private GogeLogger logger = GogeLogger.getLogger(HttpResponse.class);
+
+ /**
+ * netty原生通道
+ */
+ private ChannelHandlerContext ctx;
+
+ /**
+ * 响应头
+ */
+ private Map header;
+
+
+ /**
+ * 构造函数,框架自己用的,程序员用不到,用了也没意义
+ *
+ * @param ctx netty原生通道
+ */
+ public HttpResponse(ChannelHandlerContext ctx) {
+ this.ctx = ctx;
+ this.header = new HashMap<>();
+ }
+
+ /**
+ * 获取netty原生通道
+ * @return netty原生通道
+ */
+ public ChannelHandlerContext getChannelHandlerContext() {
+ return ctx;
+ }
+
+ /**
+ * 设置响应头
+ *
+ * @param key 键
+ * @param value 值
+ */
+ public void setHeader(String key, String value) {
+ this.header.put(key, value);
+ }
+
+ /**
+ * 响应数据
+ *
+ * @param context 消息
+ */
+ public void send(String context) {
+ send(context, HttpResponseStatus.OK);
+ }
+
+
+ /**
+ * 响应数据
+ *
+ * @param context 消息
+ * @param status 状态
+ */
+ public void send(String context, HttpResponseStatus status) {
+ FullHttpResponse response = new DefaultFullHttpResponse(HttpVersion.HTTP_1_1, status,
+ Unpooled.copiedBuffer(context, CharsetUtil.UTF_8));
+
+ crossDomain(response);
+
+ if (header != null) {
+ for (String key : header.keySet()) {
+ response.headers().set(key, header.get(key));
+ }
+ }
+
+ response.headers().set(HttpHeaderNames.CONTENT_TYPE, "text/json; charset=UTF-8");
+ ctx.writeAndFlush(response).addListener(ChannelFutureListener.CLOSE);
+ }
+
+ /**
+ * 文件下载
+ *
+ * @param file 要下载的文件
+ */
+ public void sendFile(File file) {
+ try{
+ setHeader("Content-Length", String.valueOf(file.length()));
+ sendFile(FileUtil.getFileToByte(file),file.getName());
+ } catch (Exception e){
+ logger.error("将流文件流响应给客户端出错",e);
+ }
+ }
+
+ /**
+ * 文件下载
+ *
+ * @param file 要下载的文件
+ */
+ public void sendFile(InputStream file,String fileName) {
+ sendFile(FileUtil.getInputStreamToByte(file),fileName);
+ }
+
+ /**
+ * 文件下载
+ *
+ * @param file 要下载的文件
+ */
+ public void sendFile(BufferedImage file, String fileName){
+ sendFile(FileUtil.getBufferedImageToByte(file),fileName);
+ }
+
+ /**
+ * 文件下载
+ *
+ * @param file 要下载的文件
+ */
+ public void sendFile(byte[] file,String fileName) {
+ try{
+
+ if(file == null){
+ if(this.header.get("Content-Length") != null){
+ this.header.remove("Content-Length");
+ }
+ send(MesUtil.getMes(404,"要下载的文件不存在").toJSONString());
+ throw new Exception("要下载的文件不存在");
+ }
+
+ FullHttpResponse response = new DefaultFullHttpResponse(HttpVersion.HTTP_1_1, HttpResponseStatus.OK,
+ Unpooled.copiedBuffer(file));
+
+ crossDomain(response);
+
+ if (header != null) {
+ for (String key : header.keySet()) {
+ response.headers().set(key, header.get(key));
+ }
+ }
+ response.headers().set("Content-Disposition", "attachment;filename=" + new String(fileName.getBytes(),"UTF-8"));
+ response.headers().set(HttpHeaderNames.CONTENT_TYPE, "application/octet-stream; charset=UTF-8");
+ ctx.writeAndFlush(response).addListener(ChannelFutureListener.CLOSE);
+ } catch (Exception e){
+ logger.error("将流文件流响应给客户端出错",e);
+ }
+ }
+
+ /**
+ * 设置跨域
+ */
+ private void crossDomain(FullHttpResponse response) {
+ JSONObject jsonObject = getConfig();
+ Object object = jsonObject.get("cross_domain");
+ if (object != null) {
+ JSONObject ob = JSONObject.parseObject(JSON.toJSONString(object));
+
+ response.headers().set("Access-Control-Allow-Origin", ob.get("origin").toString());
+ response.headers().set("Access-Control-Allow-Methods", ob.get("methods").toString());
+ response.headers().set("Access-Control-Max-Age", ob.get("maxAge").toString());
+ response.headers().set("Access-Control-Allow-Headers", ob.get("headers").toString());
+ response.headers().set("Access-Control-Allow-Credentials", ob.get("credentials").toString());
+ }
+ }
+
+ /**
+ * 获取配置文件
+ *
+ * @return 配置文件对象
+ */
+ private JSONObject getConfig() {
+ JSONObject jsonObject = ConfigUtil.getConfig();
+ if (jsonObject != null) {
+ return jsonObject;
+ }
+
+ return new JSONObject();
+ }
+}
diff --git a/mars-server/src/main/java/com/yuyenews/easy/server/request/RequestParser.java b/mars-server/src/main/java/com/yuyenews/easy/server/request/RequestParser.java
new file mode 100644
index 0000000..4f2318d
--- /dev/null
+++ b/mars-server/src/main/java/com/yuyenews/easy/server/request/RequestParser.java
@@ -0,0 +1,106 @@
+package com.yuyenews.easy.server.request;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Hashtable;
+import java.util.List;
+import java.util.Map;
+
+import com.yuyenews.easy.server.request.model.FileUpLoad;
+
+import io.netty.handler.codec.http.FullHttpRequest;
+import io.netty.handler.codec.http.HttpMethod;
+import io.netty.handler.codec.http.QueryStringDecoder;
+import io.netty.handler.codec.http.multipart.Attribute;
+import io.netty.handler.codec.http.multipart.HttpPostRequestDecoder;
+import io.netty.handler.codec.http.multipart.InterfaceHttpData;
+import io.netty.handler.codec.http.multipart.MixedFileUpload;
+
+/**
+ * 参数解析器
+ *
+ * @author yuye
+ *
+ */
+public class RequestParser {
+
+ private FullHttpRequest fullReq;
+
+ /**
+ * 构造一个解析器
+ *
+ * @param req 请求对象
+ */
+ public RequestParser(FullHttpRequest req) {
+ this.fullReq = req;
+ }
+
+ /**
+ * 解析请求参数
+ *
+ * @return 包含所有请求参数的键值对, 如果没有参数, 则返回空Map
+ *
+ * @throws Exception 异常
+ */
+ @SuppressWarnings("unchecked")
+ public Map parse() throws Exception {
+ HttpMethod method = fullReq.method();
+
+ Map parmMap = new HashMap<>();
+
+ if (HttpMethod.GET == method) {
+ // 是GET请求
+ QueryStringDecoder decoder = new QueryStringDecoder(fullReq.uri());
+ Map> params = decoder.parameters();
+ for(String key : params.keySet()){
+ parmMap.put(key, params.get(key));
+ }
+ } else if (HttpMethod.POST == method) {
+ // 是POST请求
+ HttpPostRequestDecoder decoder = new HttpPostRequestDecoder(fullReq);
+ decoder.offer(fullReq);
+
+ List parmList = decoder.getBodyHttpDatas();
+
+ Map files = new Hashtable<>();
+
+ for (InterfaceHttpData parm : parmList) {
+
+ if (parm instanceof Attribute) {
+ Attribute data = (Attribute) parm;
+ List ps = null;
+ Object objs = parmMap.get(data.getName());
+ if (objs == null) {
+ ps = new ArrayList<>();
+ } else {
+ ps = (List) objs;
+ }
+ ps.add(data.getValue());
+ parmMap.put(data.getName(), ps);
+
+ } else if (parm instanceof MixedFileUpload) {
+ MixedFileUpload fileUpload = (MixedFileUpload) parm;
+
+ byte[] bs = fileUpload.get();
+
+ InputStream inputStream = new ByteArrayInputStream(bs);
+
+ FileUpLoad upLoad = new FileUpLoad();
+ upLoad.setFileName(fileUpload.getFilename());
+ upLoad.setInputStream(inputStream);
+ upLoad.setName(fileUpload.getName());
+
+ files.put(fileUpload.getName(), upLoad);
+ }
+
+ }
+ parmMap.put("files", files);
+ }
+
+ return parmMap;
+ }
+
+}
diff --git a/mars-server/src/main/java/com/yuyenews/easy/server/request/model/FileUpLoad.java b/mars-server/src/main/java/com/yuyenews/easy/server/request/model/FileUpLoad.java
new file mode 100644
index 0000000..da74e44
--- /dev/null
+++ b/mars-server/src/main/java/com/yuyenews/easy/server/request/model/FileUpLoad.java
@@ -0,0 +1,51 @@
+package com.yuyenews.easy.server.request.model;
+
+import java.io.InputStream;
+
+/**
+ * 文件参数实体类
+ * @author yuye
+ *
+ */
+public class FileUpLoad {
+
+ /**
+ * 请求name
+ */
+ private String name;
+
+ /**
+ * 文件名
+ */
+ private String fileName;
+
+ /**
+ * 文件流
+ */
+ private InputStream inputStream;
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getFileName() {
+ return fileName;
+ }
+
+ public void setFileName(String fileName) {
+ this.fileName = fileName;
+ }
+
+ public InputStream getInputStream() {
+ return inputStream;
+ }
+
+ public void setInputStream(InputStream inputStream) {
+ this.inputStream = inputStream;
+ }
+
+}
diff --git a/mars-server/src/main/java/com/yuyenews/easy/server/servlet/EasyServlet.java b/mars-server/src/main/java/com/yuyenews/easy/server/servlet/EasyServlet.java
new file mode 100644
index 0000000..eb91f14
--- /dev/null
+++ b/mars-server/src/main/java/com/yuyenews/easy/server/servlet/EasyServlet.java
@@ -0,0 +1,21 @@
+package com.yuyenews.easy.server.servlet;
+
+import com.yuyenews.easy.server.request.HttpRequest;
+import com.yuyenews.easy.server.request.HttpResponse;
+
+/**
+ * servlet 模板
+ * @author yuye
+ *
+ */
+public interface EasyServlet {
+
+
+ /**
+ * 请求接受方法
+ * @param request
+ * @param response
+ * @return obj
+ */
+ Object doRequest(HttpRequest request,HttpResponse response);
+}
diff --git a/mars-server/src/main/java/com/yuyenews/easy/util/RequestUtil.java b/mars-server/src/main/java/com/yuyenews/easy/util/RequestUtil.java
new file mode 100644
index 0000000..b09247c
--- /dev/null
+++ b/mars-server/src/main/java/com/yuyenews/easy/util/RequestUtil.java
@@ -0,0 +1,25 @@
+package com.yuyenews.easy.util;
+
+import com.yuyenews.easy.server.request.HttpRequest;
+
+/**
+ * 请求工具类
+ * @author yuye
+ *
+ */
+public class RequestUtil {
+
+ /**
+ * 从uri中提取最末端
+ * @param request 请求
+ * @return string
+ */
+ public static String getUriName(HttpRequest request) {
+ /* 获取路径 */
+ String uri = request.getUri();
+ if(uri.indexOf("?")>-1) {
+ uri = uri.substring(0,uri.indexOf("?"));
+ }
+ return uri;
+ }
+}
diff --git a/mars-start/mars-start-base/pom.xml b/mars-start/mars-start-base/pom.xml
new file mode 100644
index 0000000..b407854
--- /dev/null
+++ b/mars-start/mars-start-base/pom.xml
@@ -0,0 +1,27 @@
+
+
+
+ mars-start
+ com.gitee.sherlockholmnes
+ 2.1.0
+
+ 4.0.0
+
+ mars-start-base
+
+
+
+ com.gitee.sherlockholmnes
+ mars-jdbc-base
+ ${project.parent.version}
+
+
+ com.gitee.sherlockholmnes
+ mars-mvc
+ ${project.parent.version}
+
+
+
+
\ No newline at end of file
diff --git a/mars-start/mars-start-base/src/main/java/com/yuyenews/start/base/BaseStartEasy.java b/mars-start/mars-start-base/src/main/java/com/yuyenews/start/base/BaseStartEasy.java
new file mode 100644
index 0000000..b428d56
--- /dev/null
+++ b/mars-start/mars-start-base/src/main/java/com/yuyenews/start/base/BaseStartEasy.java
@@ -0,0 +1,105 @@
+package com.yuyenews.start.base;
+
+import com.alibaba.fastjson.JSONObject;
+import com.yuyenews.core.after.StartAfter;
+import com.yuyenews.core.constant.EasyConstant;
+import com.yuyenews.core.constant.EasySpace;
+import com.yuyenews.core.load.LoadClass;
+import com.yuyenews.core.logger.GogeLogger;
+import com.yuyenews.core.util.ConfigUtil;
+import com.yuyenews.easy.netty.server.EasyServer;
+import com.yuyenews.ioc.load.LoadEasyBean;
+import com.yuyenews.jdbc.base.BaseInitJdbc;
+import com.yuyenews.resolve.LoadController;
+import com.yuyenews.servlcet.EasyCoreServlet;
+
+/**
+ * 启动easy框架
+ * @author yuye
+ *
+ */
+public class BaseStartEasy {
+
+ private static GogeLogger log = GogeLogger.getLogger(BaseStartEasy.class);
+
+ /**
+ * 获取全局存储空间
+ */
+ private static EasySpace constants = EasySpace.getEasySpace();
+
+ /**
+ * 启动easy框架
+ * @param clazz
+ */
+ public static void start(Class> clazz, BaseInitJdbc baseInitJdbc) {
+ try {
+
+ log.info("程序启动中......");
+
+ /* 加载框架数据 */
+ load(clazz,baseInitJdbc);
+
+ /* 标识createbean方法已经调用完毕 */
+ constants.setAttr(EasyConstant.HAS_START,"yes");
+
+ /* 启动after方法 */
+ StartAfter.after();
+
+ /* 启动netty */
+ EasyServer.start(getPort());
+
+ } catch (Exception e) {
+ log.error("",e);
+ }
+ }
+
+ /**
+ * 加载控制层所有的类和所需数据
+ */
+ private static void load(Class> clazz, BaseInitJdbc baseInitJdbc) throws Exception{
+
+ /* 配置核心servlet */
+ constants.setAttr("core", EasyCoreServlet.class.getName());
+
+ /* 加载配置文件 */
+ ConfigUtil.loadConfig();
+
+ /*获取要扫描的包*/
+ String className = clazz.getName();
+ className = className.substring(0,className.lastIndexOf("."));
+
+ /* 将要扫描的包名存到全局存储空间,给别的需要的地方使用 */
+ constants.setAttr("rootPath", className);
+
+ /* 获取此包下面的所有类(包括jar中的) */
+ LoadClass.loadBeans(className);
+
+ /* 加载JDBC模块 */
+ if(baseInitJdbc != null){
+ baseInitJdbc.init();
+ }
+
+ /* 创建bean对象 */
+ LoadEasyBean.loadBean();
+
+ /* 创建controller对象 */
+ LoadController.loadContrl();
+
+ }
+
+ /**
+ * 获取端口号,默认8080
+ * @return
+ */
+ private static int getPort() {
+
+ JSONObject jsonObject = ConfigUtil.getConfig();
+ Object por = jsonObject.get("port");
+ if(por!=null) {
+ return Integer.parseInt(por.toString());
+ }
+
+ return 8080;
+ }
+
+}
diff --git a/mars-start/mars-start-base/src/main/resources/demo/goge.yml b/mars-start/mars-start-base/src/main/resources/demo/goge.yml
new file mode 100644
index 0000000..42d288d
--- /dev/null
+++ b/mars-start/mars-start-base/src/main/resources/demo/goge.yml
@@ -0,0 +1,85 @@
+#此配置文件只是个demo,对开发没什么卵用
+
+#配置端口号(默认8080)
+port: 8088
+#配置jwt有效期(默认1),单位:天
+jwtTime: 20
+#请求超时时间(默认10),单位:秒
+timeOut: 10
+#请求数据的最大值(默认10485760)
+maxContentLength: 10
+#配置跨域请求
+cross_domain:
+ origin: *
+ methods: "GET,POST"
+ maxAge: 9
+ headers: "x-requested-with,Cache-Control,Pragma,Content-Type,Token"
+ credentials: "true"
+
+
+#配置处理请求的线程池参数(这些都是默认值)
+threadPool:
+ corePoolSize: 100
+ maximumPoolSize: 1000
+ keepAliveTime: 60
+
+#配置持久层
+jdbc:
+ #配置数据源,必须是数组
+ dataSource:
+ -
+ name: dataSource
+ url: jdbc:mysql://10.211.55.5:3306/test?serverTimezone=GMT%2B8
+ username: root
+ password: rootroot
+ driverClassName: com.mysql.cj.jdbc.Driver
+
+ #配置mybatis方言
+ dialect: mysql
+ #配置要扫描的mapper.xml 文件存放路径
+ mappers: mappers
+
+#log4j2 配置文件的路径
+#相对路径必须以classPath- 开头,区分大小写
+#绝对路径直接写即可,不需要开头
+logFile: classpath-log4j2.xml
+
+
+#以下配置 必须在导入goge-extends 中的相应的jar包后 才生效
+
+#redis配置
+redis:
+ maxTotal: 1000
+ maxIdle: 100
+ numTestsPerEvictionRun: 10
+ timeBetweenEvictionRunsMillis: 10
+ minEvictableIdleTimeMillis: 10
+ softMinEvictableIdleTimeMillis: 10
+ maxWaitMillis: 10
+ testOnBorrow: false
+ testWhileIdle: false
+ testOnReturn: false
+ jmxEnabled: false
+ jmxNamePrefix: pool
+ blockWhenExhausted: false
+ # redis连接,必须是数组 因为可能需要连多个redis
+ jedisShardInfos:
+ -
+ name: master
+ host: 10.211.55.5
+ port: 6379
+ password: 123456
+ # 这两个可以不配置
+ connectionTimeout: 1000
+ soTimeout: 1000
+
+#邮件配置 只支持smtp
+mail:
+ host: smtp.sina.com
+ port: 465
+ smtpSslEnable: true
+ debug: false
+ # 发件箱
+ sendMail: 发件箱
+ sendMailPwd: 发件箱密码
+ auth: true
\ No newline at end of file
diff --git a/mars-start/mars-start-base/src/main/resources/goge-config-demo/goge.yml b/mars-start/mars-start-base/src/main/resources/goge-config-demo/goge.yml
new file mode 100644
index 0000000..90cea0e
--- /dev/null
+++ b/mars-start/mars-start-base/src/main/resources/goge-config-demo/goge.yml
@@ -0,0 +1,10 @@
+#此配置文件只是个demo,对开发没什么卵用
+
+#配置端口号(默认8080)
+port: 8088
+
+#goge-config 远程配置中心
+config:
+ name: user1
+ myIp: 127.0.0.1
+ url: 127.0.0.1:8090
\ No newline at end of file
diff --git a/mars-start/mars-start-jpa/pom.xml b/mars-start/mars-start-jpa/pom.xml
new file mode 100644
index 0000000..489798d
--- /dev/null
+++ b/mars-start/mars-start-jpa/pom.xml
@@ -0,0 +1,26 @@
+
+
+
+ mars-start
+ com.gitee.sherlockholmnes
+ 2.1.0
+
+ 4.0.0
+
+ mars-start-jpa
+
+
+
+ com.gitee.sherlockholmnes
+ mars-start-base
+ ${project.parent.version}
+
+
+ com.gitee.sherlockholmnes
+ mars-jpa
+ ${project.parent.version}
+
+
+
\ No newline at end of file
diff --git a/mars-start/mars-start-jpa/src/main/java/com/yuyenews/start/StartEasy.java b/mars-start/mars-start-jpa/src/main/java/com/yuyenews/start/StartEasy.java
new file mode 100644
index 0000000..9ba9b36
--- /dev/null
+++ b/mars-start/mars-start-jpa/src/main/java/com/yuyenews/start/StartEasy.java
@@ -0,0 +1,14 @@
+package com.yuyenews.start;
+
+import com.yuyenews.easy.jpa.init.InitJdbc;
+import com.yuyenews.start.base.BaseStartEasy;
+
+public class StartEasy {
+ /**
+ * 启动easy框架
+ * @param clazz
+ */
+ public static void start(Class> clazz){
+ BaseStartEasy.start(clazz,new InitJdbc());
+ }
+}
diff --git a/mars-start/mars-start-mybatis/pom.xml b/mars-start/mars-start-mybatis/pom.xml
new file mode 100644
index 0000000..2856491
--- /dev/null
+++ b/mars-start/mars-start-mybatis/pom.xml
@@ -0,0 +1,27 @@
+
+
+
+ mars-start
+ com.gitee.sherlockholmnes
+ 2.1.0
+
+ 4.0.0
+
+ mars-start-mybatis
+
+
+
+ com.gitee.sherlockholmnes
+ mars-start-base
+ ${project.parent.version}
+
+
+ com.gitee.sherlockholmnes
+ mars-mybatis
+ ${project.parent.version}
+
+
+
+
\ No newline at end of file
diff --git a/mars-start/mars-start-mybatis/src/main/java/com/yuyenews/start/StartEasy.java b/mars-start/mars-start-mybatis/src/main/java/com/yuyenews/start/StartEasy.java
new file mode 100644
index 0000000..bfc39fb
--- /dev/null
+++ b/mars-start/mars-start-mybatis/src/main/java/com/yuyenews/start/StartEasy.java
@@ -0,0 +1,23 @@
+package com.yuyenews.start;
+
+import com.yuyenews.easy.init.InitJdbc;
+import com.yuyenews.start.base.BaseStartEasy;
+
+/**
+ * 启动easy框架
+ * @author yuye
+ *
+ */
+public class StartEasy {
+
+
+
+ /**
+ * 启动easy框架
+ * @param clazz
+ */
+ public static void start(Class> clazz) {
+ BaseStartEasy.start(clazz,new InitJdbc());
+ }
+
+}
diff --git a/mars-start/mars-start-simple/pom.xml b/mars-start/mars-start-simple/pom.xml
new file mode 100644
index 0000000..c6c1e7b
--- /dev/null
+++ b/mars-start/mars-start-simple/pom.xml
@@ -0,0 +1,21 @@
+
+
+
+ mars-start
+ com.gitee.sherlockholmnes
+ 2.1.0
+
+ 4.0.0
+
+ mars-start-simple
+
+
+
+ com.gitee.sherlockholmnes
+ mars-start-base
+ ${project.parent.version}
+
+
+
\ No newline at end of file
diff --git a/mars-start/mars-start-simple/src/main/java/com/yuyenews/start/StartEasy.java b/mars-start/mars-start-simple/src/main/java/com/yuyenews/start/StartEasy.java
new file mode 100644
index 0000000..7790495
--- /dev/null
+++ b/mars-start/mars-start-simple/src/main/java/com/yuyenews/start/StartEasy.java
@@ -0,0 +1,19 @@
+package com.yuyenews.start;
+
+import com.yuyenews.start.base.BaseStartEasy;
+
+/**
+ * 启动easy框架
+ * @author yuye
+ *
+ */
+public class StartEasy {
+
+ /**
+ * 启动easy框架
+ * @param clazz
+ */
+ public static void start(Class> clazz) {
+ BaseStartEasy.start(clazz,null);
+ }
+}
diff --git a/mars-start/pom.xml b/mars-start/pom.xml
new file mode 100644
index 0000000..1a919a7
--- /dev/null
+++ b/mars-start/pom.xml
@@ -0,0 +1,33 @@
+
+
+
+ Mars-java
+ com.gitee.sherlockholmnes
+ 2.1.0
+
+ 4.0.0
+ pom
+
+ mars-start-mybatis
+ mars-start-simple
+ mars-start-jpa
+ mars-start-base
+
+ mars-start
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+
+ 1.8
+ 1.8
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..c58a6ff
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,178 @@
+
+ 4.0.0
+ com.gitee.sherlockholmnes
+ Mars-java
+ 2.1.0
+ pom
+
+ mars-aop
+ mars-ioc
+ mars-core
+ mars-mvc
+ mars-netty
+ mars-server
+ mars-start
+ mars-jdbc
+
+
+
+ ${java.home}/../bin/javadoc
+
+
+
+
+
+ com.gitee.sherlockholmnes
+ mars-aop
+ ${project.parent.version}
+
+
+ com.gitee.sherlockholmnes
+ mars-ioc
+ ${project.parent.version}
+
+
+ com.gitee.sherlockholmnes
+ mars-mvc
+ ${project.parent.version}
+
+
+ com.gitee.sherlockholmnes
+ mars-core
+ ${project.parent.version}
+
+
+ com.gitee.sherlockholmnes
+ mars-netty
+ ${project.parent.version}
+
+
+
+ com.gitee.sherlockholmnes
+ mars-server
+ ${project.parent.version}
+
+
+
+ io.netty
+ netty-all
+ 5.0.0.Alpha2
+
+
+
+ com.alibaba
+ fastjson
+ 1.2.47
+
+
+
+ org.slf4j
+ slf4j-api
+ 1.7.25
+
+
+ org.slf4j
+ slf4j-jdk14
+ 1.7.25
+
+
+
+ org.apache.logging.log4j
+ log4j-api
+ 2.11.2
+
+
+ org.apache.logging.log4j
+ log4j-core
+ 2.11.2
+
+
+
+ org.ow2.asm
+ asm
+ 5.2
+
+
+ cglib
+ cglib
+ 3.2.5
+
+
+
+ mysql
+ mysql-connector-java
+ 8.0.11
+
+
+
+ org.mybatis
+ mybatis
+ 3.4.6
+
+
+
+ com.alibaba
+ druid
+ 1.1.10
+
+
+
+ com.github.pagehelper
+ pagehelper
+ 4.1.3
+
+
+
+ com.auth0
+ java-jwt
+ 3.4.1
+
+
+
+ org.jyaml
+ jyaml
+ 1.3
+
+
+
+
+
+ org.sonatype.oss
+ oss-parent
+ 7
+
+
+
+ The Apache Software License, Version 2.0
+ http://www.apache.org/licenses/LICENSE-2.0.txt
+ repo
+
+
+
+ https://gitee.com/SherlockHolmnes/Goge-framework
+ https://gitee.com/SherlockHolmnes/Goge-framework.git
+ https://gitee.com/SherlockHolmnes/Goge-framework
+
+
+
+ sherlockholmes
+ 1784955689@qq.com
+ https://gitee.com/SherlockHolmnes/Goge-framework
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+
+ 1.8
+ 1.8
+
+
+
+
+
\ No newline at end of file