Project Object Model,項目對象模型。通過xml可擴展標記語言(EXtensible Markup Language)格式保存的pom.xml文件。作用類似ant的build.xml文件,功能更強大。該文件用於管理:源代碼、配置文件、開發者的信息和角色、問題追蹤系統、組織信息、項目授權、項目的url、項目的依賴關系等等。
一個完整的pom.xml文件,放置在項目的根目錄下
頭信息:
<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 聲明項目描述符遵循哪一個POM模型版本。模型本身的版本很少改變,雖然如此,但它仍然是必不可少的, 這是為了當Maven引入了新的特性或者其他模型變更的時候,確保穩定性。 groupId 公司或者組織的唯一標志,並且配置時生成的路徑也是由此生成, 如com.winner.trade,maven會將該項目打成的jar包放本地路徑:/com/winner/trade artifactId 本項目的唯一ID,一個groupId下面可能多個項目,就是靠artifactId來區分的 version 本項目目前所處的版本號 packaging 打包類型,可取值:pom , jar , maven-plugin , ejb , war , ear , rar , par等等 name 項目的名稱, Maven產生的文檔用,可省略 url 項目主頁的URL, Maven產生的文檔用 ,可省略
依賴:
<dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.0</version> <scope>test</scope> <optional>true</optional> <exclusions> <exclusion> <groupId>xxx</groupId> <artifactId>xxx</artifactId> </exclusion> </exclusions> </dependency> … </dependencies>
排除依賴
當一個項目A依賴項目B,而項目B同時依賴項目C,如果項目A中因為各種原因不想引用項目C,在配置項目B的依賴時,可以排除對C的依賴。
<project>
...
<dependencies>
<dependency>
<groupId>sample.ProjectB</groupId>
<artifactId>Project-B</artifactId>
<version>1.0</version>
<scope>compile</scope>
<exclusions>
<exclusion> <!-- declare the exclusion here -->
<groupId>sample.ProjectC</groupId>
<artifactId>Project-C</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
</project>
我們想要一次構建兩個項目,而不是到兩個模塊的目錄下分別執行mvn命令 – Maven的聚合就是為該需求服務的。
為了能夠使用一條命令就能構建account-email和account-persist兩個模塊,需要創建一個額外的名為account-aggregator的模塊,然后通過該模塊構建整個項目的所有模塊。
<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.maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.park.mvnDemo.account</groupId> <artifactId>account-aggregator</artifactId> <version>1.0.0-SNAPSHOT</version> <packaging>pom</packaging> <name>Account Aggregator</name> <modules> <module>account-email</module> <module>account-persist<module> </modules> </project>