POM:項目對象模型,定義了整個maven項目信息,包括類型,名稱,包含的依賴,自定義插件行爲.如在上一篇的demo中的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>4.0.0</modelVersion>
<groupId>com.sam.app</groupId>
<artifactId>my-app</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<name>my-app</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
麻雀雖小,五臟俱全。這個自動生成的POM文件包含了最基本的元素:
- project :根元素
- modelVersion 這個是固定的model版本
- groupId 組織的Id,用於區分,for example org.apache.maven.plugins 就是所有maven插件的groupId
- artifactId 具體的項目Id,最後生成的jar包名稱格式: <artifactId>-<version>.<extension> (for example, myapp-1.0.jar).
- packaging 打包的類型(e.g. JAR, WAR, EAR, etc.).
- version 版本號
- name 項目名
- url 如果有的話
- description 簡單描述
生命週期:一個項目構建的一系列階段:
- validate: 確認整個項目是否正確,必要的信息是否可用
- compile: 編譯項目源代碼
- test: 用常用的單元測試框架測試源代碼,這些測試不用被打包或部署,故分爲一個階段
- package: 打包編譯好的文件爲,jar或者war
- integration-test:部署包到運行環境中進行集成測試
- verify: 驗證包的有效性,符合質量標準
- install: 安裝包到本地倉庫,以便其他項目可以利用
- deploy: 部署
- clean: 清理之前的構建
- site: 生成站點文檔
當我們運行>mvn package時,jar:jar目標被綁定到打包階段,,而在這之前又有resources:resources=>compiler:compile=>resources:testResource=>compile:testCompile和surefire:test這些目標按生命週期的順序被運行了
插件:其中的archetype就是插件 ,create則是插件的一個目標.一個插件有多個目標,maven有很多的插件,如Jar.Compiler,Surefire,Hibernate3,ruby,還可以自定義插件.
目標:目標表示一個明確的任務,要做什麼
比如要讓項目可以導入到eclipse,可以
mvn eclipse:eclipse
如果是IntelliJ IDEA,也有相應的
mvn idea:idea
插件:其中的archetype就是插件 ,create則是插件的一個目標.一個插件有多個目標,maven有很多的插件,如Jar.Compiler,Surefire,Hibernate3,ruby,還可以自定義插件.
目標:目標表示一個明確的任務
(~/.m2/repository is the default location)
插件:其中的archetype就是插件 ,create則是插件的一個目標.一個插件有多個目標,maven有很多的插件,如Jar.Compiler,Surefire,Hibernate3,ruby,還可以自定義插件.
目標:目標表示一個明確的任務