1.nacos源码分析-启动流程及项目结构分析

1.下载源码:

git clone [email protected]:alibaba/nacos.git

 

2.导入源码到idea中

 

3.打包编译:

mvn -Prelease-nacos clean install -U -Dmaven.test.skip=true

 

4.开始分析源码

首先找到distribution这个mudule,该module中的start.sh启动文件,找到这一行:

JAVA_OPT="${JAVA_OPT} -Dloader.path=${BASE_DIR}/plugins/health -jar ${BASE_DIR}/target/${SERVER}.jar"

根据上面的定义:

export SERVER="nacos-server"

可以看出,nacos启动的时候是启动的nacos-servce.jar这个jar包。该包在步骤3的编译打包后位于distribution这个module的target下,解压该包,查看MANIFEST.MF文件,看到启动类为Nacos类:

Start-Class: com.alibaba.nacos.Nacos

该类位于console这个module下,入口找到。

 

5.console这个springboot项目,console本身没有什么核心功能,主要是一些权限相关的内容,console还引入了naming和config项目。

${project.groupId} nacos-config ${project.groupId} nacos-naming

 

并且在console的启动类中:

@SpringBootApplication(scanBasePackages = "com.alibaba.nacos") @ServletComponentScan @EnableScheduling public class Nacos { public static void main(String[] args) { SpringApplication.run(Nacos.class, args); } }

指定了包扫描,因此,工程中所有该包下的@Component类型注解都会描加载。

distribution中的sh脚本启动调用java -jar nacos-server.jar

 

 

nacos-server中执行main方法位于console项目中:com.alibaba.nacos.Nacos类。

console项目依赖于naming和config项目;

naming项目依赖于core和api项目;

config项目依赖于core和api项目;

core项目依赖于common项目;

client项目依赖于common项目和client项目;

cmdb项目依赖于core和api项目;

console的Nacos类启动后,会通过包扫描来扫描所有的module相关目录,至此,项目启动。

你可能感兴趣的:(nacos源码分析,nacos)