maven學習之二(概念組成)

一個maven項目由一個pom文件和源代碼組成.

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,還可以自定義插件.

目標:目標表示一個明確的任務

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章