超級POM
所有的Maven項目的POM都擴展自超級POM。你可以在${M2_HOME}/lib
中的maven-2.0.9-uber.jar
文件中找到pom-4.0.0.xml
。
超級pom:
<project>
<modelVersion>4.0.0</modelVersion>
<name>Maven Default Project</name>
<repositories>
<repository>
<id>central</id>
<name>Maven Repository Switchboard</name>
<layout>default</layout>
<url>http://repo1.maven.org/maven2</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>central</id>
<name>Maven Plugin Repository</name>
<url>http://repo1.maven.org/maven2</url>
<layout>default</layout>
<snapshots>
<enabled>false</enabled>
</snapshots>
<releases>
<updatePolicy>never</updatePolicy>
</releases>
</pluginRepository>
</pluginRepositories>
<build>
<directory>target</directory>
<outputDirectory>target/classes</outputDirectory>
<finalName>content-zh-0.5</finalName>
<testOutputDirectory>target/test-classes</testOutputDirectory>
<sourceDirectory>src/main/java</sourceDirectory>
<scriptSourceDirectory>src/main/scripts</scriptSourceDirectory>
<testSourceDirectory>src/test/java</testSourceDirectory>
<resources>
<resource>
<directory>src/main/resources</directory>
</resource>
</resources>
<testResources>
<testResource>
<directory>src/test/resources</directory>
</testResource>
</testResources>
</build>
<pluginManagement>
<plugins>
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.1</version>
</plugin>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.2-beta-1</version>
</plugin>
<plugin>
<artifactId>maven-clean-plugin</artifactId>
<version>2.2</version>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.0.2</version>
</plugin>
<plugin>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.0</version>
</plugin>
<plugin>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.3</version>
</plugin>
<plugin>
<artifactId>maven-ear-plugin</artifactId>
<version>2.3.1</version>
</plugin>
<plugin>
<artifactId>maven-ejb-plugin</artifactId>
<version>2.1</version>
</plugin>
<plugin>
<artifactId>maven-install-plugin</artifactId>
<version>2.2</version>
</plugin>
<plugin>
<artifactId>maven-jar-plugin</artifactId>
<version>2.2</version>
</plugin>
<plugin>
<artifactId>maven-javadoc-plugin</artifactId>
<version>2.4</version>
</plugin>
<plugin>
<artifactId>maven-plugin-plugin</artifactId>
<version>2.3</version>
</plugin>
<plugin>
<artifactId>maven-rar-plugin</artifactId>
<version>2.2</version>
</plugin>
<plugin>
<artifactId>maven-release-plugin</artifactId>
<version>2.0-beta-7</version>
</plugin>
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>2.2</version>
</plugin>
<plugin>
<artifactId>maven-site-plugin</artifactId>
<version>2.0-beta-6</version>
</plugin>
<plugin>
<artifactId>maven-source-plugin</artifactId>
<version>2.0.4</version>
</plugin>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.4.2</version>
</plugin>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>2.1-alpha-1</version>
</plugin>
</plugins>
</pluginManagement>
<reporting>
<outputDirectory>target/site</outputDirectory>
</reporting>
</project>
1).默認的超級POM定義了一個單獨的遠程Maven倉庫,ID為central,這是所有Maven客戶端默認配置訪問的中央Maven倉庫;該配置可以通過一個自定義的
settings.xml
文件來覆蓋,注意這個默認的超級POM關閉了從中央Maven倉庫下載snapshot構件的功能。如果你需要使用一個snapshot倉庫,你就要在你的pom.xml
或者settings.xml
中自定義倉庫設置.
2)build
元素設置Maven標準目錄布局中那些目錄的默認值.
3)POM中定義的groupId
,artifactId
和version
:這三項是所有項目都需要的坐標
一個groupId
歸類了一組相關的構件。組定義符基本上類似于一個Java包名。例如:groupId
org.apache.maven
是所有由Apache Maven項目生成的構件的基本groupId。組定義符在Maven倉庫中被翻譯成路徑,例如,groupId
org.apache.maven
可以在repo1.maven.org的/maven2/org/apache/maven
目錄下找到。
artifactId
是項目的主要定義符。當你生成一個構件,這個構件將由artifactId
命名。當你引用一個項目,你就需要使用artifactId
來引用它。artifactId
和groupId
的組合必須是唯一的。換句話說,你不能有兩個不同的項目擁有同樣的artifactId
和groupId
;在某個特定的groupId
下,artifactId
也必須是唯一的。
當一個構件發布的時候,它是使用一個版本號發布的。該版本號是一個數字定義符如“1.0”,“1.1.1”,或“1.1.2-alpha-01”。你也可以使用所謂的快照(snapshot)版本。一個快照版是一個處于開發過程中的組件的版本,快照版本號通常以SNAPSHOT結尾;如,“1.0-SNAPSHOT”,“1.1.1-SNAPSHOT”,和“1-SNAPSHOT”。Section 9.3.1, “項目版本”介紹了版本和版本界限。