1.项目maven结构:
项目地址:
https://github.com/KouReal/Rpc-Netty-Registry
2.之前没有在pom.xml中添加spring-boot-maven-build插件,只有在父工程的pom.xml中写了maven-compiler-plugin这个插件,所以项目只能在eclipse中选中主类run as java application,后来添加了(父工程和子模块都添加了):
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.8</source> <target>1.8</target> <encoding>UTF-8</encoding> </configuration> </plugin> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <version>2.1.8.RELEASE</version> <executions> <execution> <goals> <goal>repackage</goal> </goals> </execution> </executions> </plugin> </plugins> </build>
3.之后可以在cmd切到项目某个模块的根目录,比如RegistryCenter(启动优先级最高),运行mvn clean package -Dmaven.test.skip=true打包,运行mvn spring-boot:run -Dmaven.test.skip=true运行(界面显示初次运行会下载很多springboot-core文件还有其他的slfj等等插件,在eclipse中运行不会显示)
注意:错误命令演示:使用java命令没有用到spring-boot的maven插件,所以会报错:“NoClassDefFoundError”
后来参考官方文档,学习到了mvn spring-boot:repackage命令,通过这个命令打包,可以使用java -jar运行,
于是对这个模块使用:mvn spring-boot:repackage -Dmaven.test.skip=true
结果:
查stackoverflow,应该用:mvn clean install spring-boot:repackage -Dmaven.test.skip=true
然后可以在target目录用java -jar运行jar包了:
使用repackage命令的作用是对原始的maven打包好的jar文件或war文件进一步打包,添加一些运行时的依赖资源,生成一个更大的jar 包,这个jar包就可以用java -jar运行了。