项目多模块似乎已经很常见了,这里分享一下多模块构建过程。
环境:idea+SpringBoot2.0。
目标:父工程(打包pom),子工程(api-jar包,让web工程依赖)、子工程(hh-pojo-jar,让web工程依赖)以及web主工程(打war包)。
基本上本篇博客是在上一篇博文的基础上继续进行拓展。
步骤:父工程右键 – new Module – Maven 不使用模板(这个自行斟酌)。
创建后项目如下:
父工程的pom文件会自动添加module依赖:
添加pojo、dao和mapper.xml,如下图所示
① 修改pom文件添加hh-pojo依赖
<dependency>
<groupId>com.janegroupId>
<artifactId>hh-apiartifactId>
<version>1.0-SNAPSHOTversion>
dependency>
<dependency>
<groupId>com.janegroupId>
<artifactId>hh-pojoartifactId>
<version>1.0-SNAPSHOTversion>
dependency>
② 主程序类添加注解@MapperScan({“com.jane.dao”})
@SpringBootApplication
@MapperScan({"com.jane.dao"})
public class HhCoreApplication {
public static void main(String[] args) {
SpringApplication.run(HhCoreApplication.class, args);
}
}
③ yml添加配置
# 配置mybatis
mybatis:
config-location: classpath:mybatis/mybatis-config.xml
mapper-locations: classpath*:mybatis/mapper/*.xml
这里简要讲述一下classpath :
classpath:/xxx 和 classpath:xxx是一样的 。
.
classpath:xxx 和 classpath*:xxx是不一样的,前者表示引入一个,后者表示引入多个。
.
而且classpath*
不仅包含class路径,还包括jar文件中(class路径)进行查找。
.
classpath:mapper/**/*.xml
:查找类路径下mapper包下面所有子包中的所有xml。
④ hh-core项目添加自己的dao和mapper.xml
⑤ controller中编写代码测试两个到
@RestController
public class HelloController {
@Autowired
SysApkMapper apkMapper;
@Autowired
ISysApkExtendDao apkExtendDao;
@RequestMapping("/hello")
public Object hello(){
String source = "janus";
if (ToolUtils.isEmpty(source)){
System.out.println("true");
}
SysApk sysApk = apkMapper.selectByPrimaryKey(1L);
SysApk sysApkByType = apkExtendDao.getSysApkByType(1);
JSONObject jsonObject = new JSONObject();
jsonObject.put("apkMapper",sysApk);
jsonObject.put("apkExtendDao",sysApkByType);
return jsonObject;
}
}
⑥ 使用浏览器进行测试
如下图所示,可以完美从两个不同项目不同dao中拿到数据:
out存放的是该项目下所有Module(模块)的编译结果。 target存放的是单个Module的编译结果。
如果为某个Module指定了编译结果的路径,则不会再输出到out文件夹中了。
在Project Structure中的Project选项卡中可以设置Project compiler output的目录。
在Modules中选择某一个模块后,在右侧的Paths选项卡中可以设置该模块的Compiler output目录。
博文对应项目下载地址:https://download.csdn.net/download/j080624/10596263