通過 maven 可以創建父子-聚合項目。 所謂的父子項目,即有一個父項目,有多個子項目。
這些子項目,在業務邏輯上,都歸納在這個父項目下,並且一般來說,都會有重複的jar包共享。
所以常用的做法會把重複的 jar 包都放在父項目下進行依賴,那麼子項目就無需再去依賴這些重複的 jar 包了。
1. 使用IDEA創建maven項目
創建的maven項目就是父項目,一般只提供給子項目依賴並將子項目進行聚合,並不會實際的寫代碼
創建之後要在pom.xml中添加
<!--包爲pom,即父子聚合項目-->
<packaging>pom</packaging>
完整pom.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>lsl</groupId>
<artifactId>maven-modulesProject</artifactId>
<version>1.0-SNAPSHOT</version>
<!--包爲pom,即父子聚合項目-->
<packaging>pom</packaging>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>4.3.1</version>
</dependency>
</dependencies>
</project>
2.創建子項目maven module
子項目就是實際要寫代碼的項目,創建Maven項目時可使用快速原型 org.apache.maven.archetypes:maven-archetype-quickstart 進行創建,也可以手動更改父子項目的pom.xml設置項目間的父子依賴關係
在子項目中進行一次測試:
import cn.hutool.core.date.DateUtil;
import java.util.Date;
public class App
{
public static void main(String[] args) {
String dateStr = "2012-12-12 12:12:12";
Date date = DateUtil.parse(dateStr);
System.out.println(date);
}
}
在子項目的pom.xml中並沒有導入cn.hutool依賴但仍然能夠使用
3.父子項目中的pom.xml
觀察子項目中的pom.xml爲:
<!--父類-->
<parent>
<artifactId>maven-modulesProject</artifactId>
<groupId>lsl</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<!--模塊版本與模塊名-->
<modelVersion>4.0.0</modelVersion>
<artifactId>childMavenProject</artifactId>
在看一下父項目的pom.xml:
<groupId>lsl</groupId>
<artifactId>maven-modulesProject</artifactId>
<version>1.0-SNAPSHOT</version>
<!--所包含模塊-->
<modules>
<module>childMavenProject</module>
</modules>
子項目中多出來了標籤<parent>,父項目中多出了標籤<modules>,這兩種標籤即代表了父子項目之間的邏輯依賴關係,其它標籤也相應改變,通過掃描父母錄以及子目錄生成邏輯關係並完成功能
無論用什麼工具,使用maven最關鍵的還是在於配置文件pom.xml,創建父子項目的關鍵在於標籤<parent>、
<modules>、<module>、 <groupId>、<artifactId>、<version>、<modelVersion>,定義好了邏輯關係即可