环境
IntelliJ IDEA 2019.1.3 (Ultimate Edition)
java:1.8
maven:3.6.1
前言
平时的学习笔记、练习测试等之类的代码,我一般会创建两种项目:
一种普通的Java
项目,本地跑个main就行了;
另一种是web
项目;正常情况我会都上传到码云。
但是呢,比如换了一家公司,以前的代码是在码云上;但毕竟到了新公司,不想看以前的代码,习惯性又创建了一个新项目。然后又上传到码云,我的代码库就这样多了很多重复的代码项目;
今天 整理了下自己的需求,比如我最近的入职的公司使用的是Java8
,而我以前使用的是Java7
,那么我刚入职的学习笔记都是关于Java8
语法的。
学完之后,自己又想学netty了,然后netty又创建一个项目。
但是呢,我的netty
项目和Java8
的项目是没有任何关联的。
1、创建空项目
点击next
后,给项目去个名字比如:anime
这其实就是个空的文件夹
2、创建父项目管理公共依赖
路径: File -> New -> Module...
之后会进入New Module
模块,选择maven
;
项目名我取的是
cartoon
这里网上教程说要勾选Create from archetype
,然后选择maven-archetype-quickstart
。但是我这里只是需要管理jar
,并不管理代码;所以不需要勾选。
父项目弄好后,后面就是要弄子项目了;
目前我的子项目是没有什么关联的;也就是说 各模块之间是没啥关联的,
但是我弄个common
模块,用来写工具类;
3、创建公共模块
之后会进入New Module
模块,选择maven
;
勾选Create from archetype
,然后选择maven-archetype-quickstart
。
注意弹框上的前两行:
Add as module to <none>: 决定该模块存在在哪个文件夹下
Parent <none> :是否有继承
它们后面都有...
这样的图标,点击后,可以选择,这里Parent
这一栏,我是选择了之前创建的父类,选择后,其GroupId
会直接继承父类的,只需要填写artifactid
。 我取名为common
点击next
后,maven home directory
默认是IDEA
自带的,可以修改为自己本地安装的。
4、创建开发模块
拿我之前需求举例就是,我需要一个练习的netty
模块和Java8
练习的模块,模块间没有依赖关系;
Add as module to
依旧是none
Parent
选择父模块cartoon
artifactid
:我取名为attackontitan
;
4.1 创建开发模块子模块
上面我创建的attackontitan
模块是用来记录spring
相关的练习代码,那么我可能会练习web
相关的代码,也可能只是练习普通的Java
代码。
对着模块名attackontitan
右键->news->modules
勾选create from archetype
,再选择maven-archetype-quickstart
点击next
,artifactid
取名:fairytail
。
那么普通的Java
项目开发模块创建完成。
4.2 创建web子模块
上一步我创建的是一个普通的Java
项目,web
项目的话,就是在New Module
中选择maven-archetype-webappp
。
这里aritactid
取名为seven-deayly-sins
就可以了。
至此 我们的目录结构是这样的
目录结构
- anime 文件夹名
- cartoon 父模块 管理依赖的
- fairytail 普通Java项目练习代码存放地
- seven-deayly-sins web项目练习代码存放地
- common 公共模块 被其他模块依赖
- cartoon 父模块 管理依赖的
以后我要是玩netty时,那么项目结构可以这样:
- anime 文件夹名
- cartoon 父模块 管理依赖的
- fairytail 普通Java项目练习代码存放地
- seven-deayly-sins web项目练习代码存放地
- common 公共模块 被其他模块依赖
- netty netty项目练习代码
- netty相应的子模块
- 其他
- 其他相应的子模块
- cartoon 父模块 管理依赖的
关于Tomcat的配置
现在springboot以前出来很久了,Tomcat已经不需要再去单独配置了。
所以web模块可以去引入springboot
相应的依赖来起到配置Tomcat
的作用。
具体参考第二个链接
注意事项
打算创建新模块时,要将光标点击在非模块上,否则创建的模块默认都在光标所在的文件夹下,即使在弹框中设置都没用;
下图 ,我就是将光标定位在非模块上:
参考地址: