工作以后我接触到了maven分模块的正确使用姿势,我花了一整天想自己在idea上自己搭建一个架子,终于弄好了。
先说一下正确的使用姿势。
service层应该是没有启动类,无法启动的一些java文件。api模块迭代更新,对外提供rpc的接口,启动类应该写在web模块和rpc模块,其中web提供controller,api迭代更新,安装到maven仓库里面提供rpc的接口。common模块写一些工具类或者公共的bean。
我自己试了下,只想搭建一个service和web,只有这俩模块成功了,别的也就是照猫画虎。
一开始我创建父项目是springboot项目,子项目的parent指向父项目,靠,气得我差点吐血。无论怎么更改pom,加
现在看来maven真的做的不够好。唉,其实要是做的太好了,程序员也就该失业了,不知道是好事还是坏事。
不说了,跟着我做吧。
第一步,打开idea。
第二步,创建一个新的project,选择spring initializar,输入groupid和artifactId,注意,这里选择Type为Maven POM
然后 next,勾选web,spring boot devtools等需要的包,选择保存的额位置,finish。
第三步,右键刚刚生成的项目,new module,这时候我们创建空白的maven项目就行了
一直往下走,artifactId和modulename写xxx-web(自己 起个名字就行,什么模块起什么名字)。
第四步,重复第三步可以创建web,service,rpc,......所有模块,在对应的main/java文件夹下创建com.xxx.xxx包后,rpc和web还要加上启动类。
import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class App { public static void main(String[] args) { SpringApplication.run(App.class,args); } }
第五步,现在打开最外面那个pom,你会发现多了这个
这个时候,你还要在build标签(没有的话自己写)里面加上下面这些。
org.springframework.boot spring-boot-maven-plugin 1.3.0.RELEASE com.mzg.jsoup.App ZIP repackage
因为我们的web模块是依赖service模块的(contoller调用service的方法),所以要把Idea设置一下(之前没设置所以一直运行不起来,就算再在Dependences里面引入也不行,也install过service了。垃圾maven),如下:
选择你要添加依赖的模块,点击加号
点击加号后 选择你要依赖的模块,确定后就可以运行啦,这时候controller调service的方法就可以直接调用了。在你的web项目里面写个Controller,就可以启动了。但是打包是有问题的。
于是我在web里面加入了service依赖。
为了打包还要在web模块加入插件。
jsoup-web org.springframework.boot spring-boot-maven-plugin 1.3.0.RELEASE
这里注意两点,一,mainClass写你自己的启动类
二,maven插件的版本必须使用1.3.0-REALEASE,楼主试了几个别的新版本,打包的时候都报错找不到你引用的类(可是运行是没问题的,这就让我很恼火)。咱也不知道maven插件升级是升了他ma什么级,升了狗shi吗?