1. 項目編譯時,Maven的工作
當項目編譯時,Maven首先從本地倉庫中尋找項目所需的Jar包,若本地倉庫沒有,再到Maven的中央倉庫(Maven官方提供的遠程倉庫)下載所需Jar包。
2. 坐標
Maven通過坐標在倉庫中找到項目所需的Jar包,其變量有:
- groupId:所需Jar包的項目名
- artifactId:所需Jar包的模塊名
- version:所需Jar包的版本號
代碼舉例:
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.1.1</version>
</dependency>
3. 依賴
在引用jar包的時候,如果該Jar包又引用了其他Jar包,那么在默認的情況下,根據傳遞依賴的原理,Maven會將其全都下載下來。而如果只想下載直接引用的Jar包,則可以通過排除依賴,將需要排除的Jar包的坐標寫在pom.xml中。
代碼舉例:
<exclusions>
<exclusion>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
</exclusion>
</exclusions>
4. 聚合
只需在pom中作相應配置即可實現聚合--將多個項目同時運行。
代碼舉例:
<modules>
<module>../模塊1</module>
<module>../模塊2</module>
<module>../模塊3</module>
</modules>
5. 繼承
在聚合多個項目時,如果這些被聚合的項目中需要引入相同的Jar,那么可以將這些Jar寫入父pom中,各個子項目繼承該pom即可。實現上需要分別配置父pom及子pom.
父pom的配置舉例:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-spring</artifactId>
<version>1.2.2</version>
</dependency>
</dependencies>
</dependencyManagement>
子pom的對應配置如下:
<parent>
<groupId>父pom所在項目的groupId</groupId>
<artifactId>父pom所在項目的artifactId</artifactId>
<version>父pom所在項目的版本號</version>
</parent>