一 、什么是 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 确定的类型
原文:https://www.cnblogs.com/ZXF6/p/11361060.html