Idea-Maven多模块开发
公司开发:多项目开发(含多模块),基于模块的开发
方式一:新建立Maven站点pom项目:
有一个父工程,有多个子模块。聚合工程。但是父工程不做具体的业务开发。仅仅只是做依赖包的版本管理。一个项目可以有多个子项目的做法。
第一步:创建一个父项目
搭建多模块项目,必须要有一个packaging为pom的根目录。
NEW -->project-->maven-->maven Project,点击下一步,进入new maven Project的Select project name and location界面(选择maven-Archetype-site-simple)
父工程不做具体的业务开发,所以删除src目录
image.png父项目只有一个pom文件,用来管理所有子项目的jar包。
image.png白话:空项目,只有pom文件。
第二步:创建普通模块
添加多个子模块
必须在父项目上点击右键:创建模块,不是创建项目。
基本应用:选择maven-archetype-site-quickStart
Web应用:选择maven-archetype-webapp
属于父工程:
image.png注意子模块的路径:
image.png有页面的地方就可以创建web项目。
image.png新创建的项目必须观察颜色。
父子多模块工程也叫聚合工程。
第三步:模块之间调用
模块之间用坐标依赖:
<dependency>
<groupId>com.qf.service</groupId>
<artifactId>xiaomi-dao</artifactId>
<version>1.0</version>
</dependency>
代码使用:
public class XiaoMiService {
public String xiaomiService(){ //希望调用DAO 的能力
XiaoMiDAO dao = new XiaoMiDAO();
String res = dao.addXiaoMi();
return "小米服务:"+res; } //测试
public static void main(String[] args) {
XiaoMiService xiaoMiService = new XiaoMiService();
String service = xiaoMiService.xiaomiService();
System.out.println(service);
}
}
测试的时候注意统一设置JDK的编码
image.png注意上面部分 就是多模块 但是注意指针部分 需要修改成 1.8 要不然编译时候回出现警告或者异常。
image.png上面部分也要注意,都要修改成一致的
后面会给大家介绍同一修改的插件 ,但是此方法也需要学会。
扩展拔高[在第一种方案的基础上:(了解)
目录结构的变化:
子模块可以不用添加到父模块目录中:(修改了默认的目录结构)
image.png注意我用箭头标注的地方
子模块可以不添加到父模块的目录中 但是还是依赖父模块 (需要特别注意)
目录选择注意,不放在父模块的下面
image.png注意上面的剪头所指向的目录地址 并不在父模块的文件目录下
观察项目目录如下 就生成了一个 同父级目录相同的并且依赖父项目的模块
image.png
方式二:创建项目,选择Empty project,类似Eclipse放多项目的方式。 这种方式可以不需要父工程。
第一步:创建空工程
image.png
效果:
选择SDK
image.png
第二步:创建模块项目(普通+web)
选择File–>New–>Module,进入New Module页面:
可以创建多个普通项目和web项目,都在这个空的工程中。
鼠标需要点在最外层External Libraries上,避免创建的模块属于某个模块
点击下方的包 进行 new module 创建新的模块
image.png
新建模块:
image.png
注意没有单独创建父工程:
image.png
注意路径直接属于空工程中:
image.png
第三步:模块之间调用
打包:
image.png
坐标引用:
image.png
注意JDK编译版本:
一处:
image.png
二处:
image.png
三处:
方式一:
image.png
方式二:
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
</properties>
完成上面的设置之后 ,就可以很方便的互调用了。