Maven的多模块开发
随着项目的越来越大,为了更好的进行管理项目
我们可以使用Maven来进行多模块开发,将一个大项目拆分为一个一个小的模块(针对庞大复杂的项目可以更好的管理)
步骤
首先创建一个Maven的项目作为父工程
父工程中的src文件夹删除掉
- 因为父工程是为了管理下层多个子工程
- 在父工程导入依赖,其他的子工程都会存在,(继承性)(传递性)
父工程之下创建多个子模块(子模块中创建子工程)
父工程与子工程之间联系
观察pom配置文件
父工程
<?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>ParentMaven</groupId>
<artifactId>ParentMaven</artifactId>
<packaging>pom</packaging>
<version>1.0-SNAPSHOT</version>
<!--父工程中的pom-->
<!--默认指向子工程-->
<modules>
<module>One</module>
</modules>
<!--父工程中的引入依赖与以往的引入不同-->
<!--这里编写的依赖子工程会起到版本号的约束-->
<dependencyManagement>
<!--如果直接使用这种标签引入依赖-->
<!--子工程会也会直接存在父工程中的依赖-->
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>4.3.7.RELEASE</version>
</dependency>
</dependencies>
</dependencyManagement>
</project>
子工程
<?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">
<!--子工程中的pom默认引入了父工程-->
<!--之后父工程中的jar依赖,子工程都会存在-->
<parent>
<artifactId>ParentMaven</artifactId>
<groupId>ParentMaven</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>One</groupId>
<artifactId>One</artifactId>
<version>1.0-SNAPSHOT</version>
</project>
- 父工程的依赖可以对子工程进行管理
- 子父工程在pom中存在明显的相互调用关系
多个子工程之间的联系
因为现在子工程之间都是独立的小工程,想要建立联系怎么办呢
谁想要调用谁 就在pom中进行引入需要调用子工程即可
Two工程想要使用One工程的功能示例
展示项目结构
展示two工程的pom文件
<?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>ParentMaven</artifactId>
<groupId>ParentMaven</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>Two</artifactId>
<!--因为想要使用其他工程中的代码所以直接进行引入依赖即可-->
<dependencies>
<dependency>
<groupId>One</groupId>
<artifactId>One</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>
</project>
展示各个工程的依赖
展示Two工程的Test类
import cn.pojo;
public class Test {
public static void main(String[] args) {
// 自身并不存在pojo类但是因为引入One依赖所以可以使用One中的代码
pojo pojo = new pojo();
}
}
c class Test {
public static void main(String[] args) {
// 自身并不存在pojo类但是因为引入One依赖所以可以使用One中的代码
pojo pojo = new pojo();
}
}