本地调试 Eureka 源码
原创
©著作权归作者所有:来自51CTO博客作者Dongguabai的原创作品,请联系作者获取转载授权,否则将追究法律责任
安装 gradle-2.10
首先本地要安装 gradle-2.10。
下载地址:
https://gradle.org/releases/
配置环境变量:
#Gradle 配置
GRADLE_HOME=/Users/dongguabai/develope/gradle/gradle-2.10
export GRADLE_HOME
export PATH=$PATH:$GRADLE_HOME/bin
下载源码并导入 IDEA
首先将相关源码 clone 下来:
➜ gitee git clone https://github.com/Netflix/eureka.git
impor 进入 IDEA,选择 gradle。
会发现开始加载相关配置与依赖:
我这里一直出现一个异常:找不到'org.gradle.api.provider.ProviderFactory'.
这个类应该是 gradle 6.8 以上才有的,我这边直接切换 Eureka 的版本分支就可以了。
这时候已经编译好了,修改 com.netflix.eureka.resources.EurekaClientServerRestIntegrationTest#startServer 方法,避免要通过 war 包启动:
private static void startServer() throws Exception {
/*File warFile = findWar();
server = new Server(8080);
WebAppContext webapp = new WebAppContext();
webapp.setContextPath("/");
webapp.setWar(warFile.getAbsolutePath());
server.setHandler(webapp);
server.start();
eurekaServiceUrl = "http://localhost:8080/v2";*/server = new Server(8080);
WebAppContext webAppCtx = new WebAppContext(new File("./eureka-server/src/main/webapp").getAbsolutePath(), "/");
webAppCtx.setDescriptor(new File("./eureka-server/src/main/webapp/WEB-INF/web.xml").getAbsolutePath());
webAppCtx.setResourceBase(new File("./eureka-server/src/main/resources").getAbsolutePath());
webAppCtx.setClassLoader(Thread.currentThread().getContextClassLoader());
server.setHandler(webAppCtx);
server.start();
eurekaServiceUrl = "http://localhost:8080/v2";
}
接下来可以随便在 EurekaClientServerRestIntegrationTest 中找一个测试方法执行即可。