假設一個項目包含兩個模塊,咱們想要一次構建兩個模塊,而不是到兩個模塊的目錄下分別執行mvn命令,這時就須要用到聚合。apache
聚合模塊pom配置maven
packaging
類型爲 pom
modules
元素,每一個module
對應一個要被聚合的子模塊。module
的值是當前pom的相對目錄。具體配置工具
<modules> <module>模塊1</module> <module>模塊2</module> <module>模塊3</module> </modules>
聚合模塊相對位置ui
聚合模塊意義url
聚合模塊構建插件
解決重複配置問題。版本控制
項目繼承的配置code
packaging
類型爲pom
。子模塊須要配置project -> parent
元素信息xml
relativePath
: 父模塊pom文件所在路徑,默認父pom在上一層目錄下(即 ../pom.xml
)。子模塊繼承父模塊的配置繼承
<parent> <groupId>父構件groupId</groupId> <artifactId>父構件artifactId</artifactId> <version>父構件的版本號</version> <relativePath>父構件pom.xml路徑</relativePath> </parent>
可繼承的pom元素
依賴管理
dependencyManagement
元素既能讓子模塊繼承到父模塊的依賴配置,又能保證子模塊依賴使用的靈活性.dependencyManagement
元素下的依賴聲明不會引入實際的依賴
,可是它能約束對dependencies
下的依賴使用。import
依賴範圍:
dependencyManagement
配置導入,併合併到當前項目的dependencyManagement
元素中。import依賴範圍通常都指向打包類型爲pom的模塊。
<dependencyManagement> <dependencies> <dependency> <groupId>targetGroupId</groupId> <artifactId>targetArtifactId</artifactId> <version>targetVersion</version> <type>pom</type> <scope>import</scope> </dependency> <dependency>構件1</dependency> <dependency>構件2</dependency> </dependencies> </dependencyManagement>
插件管理
pluginManagement
元素幫助管理插件繼承。plugins -> plugin
元素聲明該插件的時候,插件纔會起效。groupId、artifactId
,其餘信息均可以從父pom中傳遞過來。舉例,使用maven-source-plugin插件生成項目源碼包,將該插件的jar-no-fork目標綁定到default生命週期的verify階段。
父pom插件管理配置
<build> <pluginManagement> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-source-plugin</artifactId> <version>3.2.1</version> <executions> <execution> <id>attach-source</id> <phase>verify</phase> <goals> <goal>jar-no-fork</goal> </goals> </execution> </executions> </plugin> </plugins> </pluginManagement> </build>
子pom插件聲明配置
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-source-plugin</artifactId> </plugin> </plugins> </build>
目的
與其餘模塊關係
parent
來引用父模塊。共同點
實際使用
反應堆
單模塊項目的反應堆
多模塊項目的反應堆
說明
裁剪反應堆選項
mvn -h
能夠看到裁剪反應堆的選項。-am
:--also-make, 同時構建所列模塊的依賴模塊。-amd
:-also-make-dependencies,同時構建依賴於所列模塊的模塊。-pl
:--projects <arg>,構建指定的模塊,模塊之間使用逗號分隔-rf
:-resume-from <arg>,從指定的模塊繼續反應堆