一 、什么是 maven 子父级工程?

建立一个maven项目,然后在该项目 下创建一个module,子级的maven,他继承于父级项目。

1.新建立 maven项目,file  ------new----project----maven,不使用它的模板。直接选择 ----next

完成,将父级工程的src 干掉?

父级工程的xml配置信息。

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion> <groupId>com.aaa</groupId>
<artifactId>DemoSpringBoot</artifactId>
<packaging>pom</packaging>
<version>1.0-SNAPSHOT</version> <!--modules 模块标签
1. 所有的父级工程 作用是管理jar包 不参与任何逻辑算法。所以可以干掉 SRC
2. 列举了父工程中的所有子模块,子工程可以自动继承父级工程中的jar包
3. 每一个子模块都代表了不同的包(package)
-->
<modules>
<module>mapper</module>
<module>model</module>
<module>service</module>
<module>web</module>
</modules> <dependencies>
<!-- 在父级工程中,添加一些jar 包。
mysql的驱动包
-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.38</version>
</dependency>
<dependency>
<groupId>net.sourceforge.nekohtml</groupId>
<artifactId>nekohtml</artifactId>
<version>1.9.21</version>
</dependency>
<!--
spring
-->
<!--
mybatis
-->
<!--
shiro
--> </dependencies> </project>

2.在父级工程下,右键点节,建立子级module  。

根据需求,建立一些其他的子级工程。

二、<dependencyManagement>标签。

思考?子级工程自动继承父级工程的jar包,可是,根据需要,有些子级工程不需要继承父级的jar包,但是依旧继承了,怎么处理?

2.1解决方案。父级xml 文件配置。

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.aaa</groupId>
<artifactId>DemoSpringBoot</artifactId>
<packaging>pom</packaging>
<version>1.0-SNAPSHOT</version>
<modules>
<module>mapper</module>
<module>model</module>
<module>service</module>
<module>web</module>
</modules> <!-- 思考问题?
model项目中用不到shiro,但是父子工程的规则也需要把shiro的jar加载进来,影响项目的进度和运行速度,如何解决? <denpencyManagement>标签作用 1. 被<denpencyManagement>所控制的jar包,不会被子工程所继承,如果子工程有需要,可以重写父工程中的jar包,并且不需要携带版本号
2. 如果不省略版本号,则jar包会从maven中进行下载,并不再是从父工程中重写的jar包 优点?
1.方便jar包管理,父子工程。
2.解决jar包冗余问题。层级依赖。
-->
<dependencyManagement>
<dependencies>
<!--
mysql的驱动包
-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.38</version>
</dependency>
<dependency>
<groupId>net.sourceforge.nekohtml</groupId>
<artifactId>nekohtml</artifactId>
<version>1.9.21</version>
</dependency> </dependencies>
</dependencyManagement> </project>

2.2 子级想要继承。以mapper为列。

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>DemoSpringBoot</artifactId>
<groupId>com.aaa</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion> <artifactId>mapper</artifactId> <!--
1. 子工程如果需要,重写父级工程的jar包即可,但是不能 携带版本号 2.将父级工程中的jar包 直接复制过来,但是不可携带版本号。
--> <dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
</dependencies> </project>

三、实体类的定义规则

package com.aaa.entity;
import java.io.Serializable;
/*
* * 从今天开始,所有的实体类必须按照以下标准
* 1.需要实现序列化接口
* 2.需要重写hashCode和equalse
* 3.需要重写toString()
* 4.必须有getter和setter方法
* 5.要求所有的类型全部为包装类型,不能使用基本类型
*
*
* 注意: 2.需要重写hashCode和equalse
*
* */ public class User implements Serializable {
private Long id;
private String username;
private String password;
private Integer age; public Long getId() {
return id;
} public void setId(Long id) {
this.id = id;
} public String getUsername() {
return username;
} public void setUsername(String username) {
this.username = username;
} public String getPassword() {
return password;
} public void setPassword(String password) {
this.password = password;
} public Integer getAge() {
return age;
} public void setAge(Integer age) {
this.age = age;
} @Override
public boolean equals(Object object) {
if (this == object) return true;
if (object == null || getClass() != object.getClass()) return false; User user = (User) object; if (id != null ? !id.equals(user.id) : user.id != null) return false;
if (username != null ? !username.equals(user.username) : user.username != null) return false;
if (password != null ? !password.equals(user.password) : user.password != null) return false;
return age != null ? age.equals(user.age) : user.age == null;
} @Override
public int hashCode() {
int result = id != null ? id.hashCode() : 0;
result = 31 * result + (username != null ? username.hashCode() : 0);
result = 31 * result + (password != null ? password.hashCode() : 0);
result = 31 * result + (age != null ? age.hashCode() : 0);
return result;
} @Override
public String toString() {
return "User{" +
"id=" + id +
", username='" + username + '\'' +
", password='" + password + '\'' +
", age=" + age +
'}';
}
}
  注意:  2.需要重写hashCode和equalse  确定的类型

												

最新文章

  1. SQL Server 2008 R2——使用计算列为表创建自定义的自增列
  2. Less函数说明
  3. webAPI 自动生成帮助文档
  4. ExpandableListView getChildView 不执行,不显示子列表
  5. 应用程序域(Application Domain)
  6. 一、 使用存储过程实现数据分页(Sql Server 2008 R2)
  7. seajs模块压缩问题
  8. CMake 教程
  9. id和instancetype的异同
  10. Java的基本数据类型和运算
  11. swoole框架和其所涉及的协议
  12. Go语言切片
  13. jQuery使用(三):DOM操作之val()方法操作表单元素value值
  14. vue路由组件传参
  15. Xcode 中的IOS工程模板
  16. Parallel Programming AND Asynchronous Programming
  17. HDU 2012 FZU 1756关于素数的一些水题
  18. Oracle中插入千万条测试数据
  19. jconsole工具监控java运行情况
  20. D15 模块

热门文章

  1. LeetCode1240铺瓷砖
  2. Codeforces 567C:Geometric Progression(DP)
  3. 【模型推理】量化实现分享三:详解 ACIQ 对称量化算法实现
  4. Spring Boot 使用 Filter
  5. 【服务器】【环境搭建】WordPress建立数据库连接时出错---问题---解决
  6. CS5218替代AG6310方案设计|替代AG6310方案|DP转HDMI 4K30Hz转换方案
  7. Hadoop(HDFS,YARN)的HA集群安装
  8. python 安装包时提示“unsupport command install”
  9. Go语言命名规范
  10. SSTI(以Twig模板引擎为例)