廖雪峯Java12maven基礎-1maven入門-3構建流程

maven是一個Java項目管理和構建工具:java

  • 標準化項目結構
  • 標準化構建流程(編譯、打包、發佈)
  • 依賴管理

Maven的構建流程shell

  • clean 刪除全部編譯生成的文件
  • compile 編譯源碼、編譯測試源碼
  • test 運行測試
  • package 打包爲jar/war

maven的生命週期Lifecycle是由一系列phase構成:apache

  • clean
  • compile
  • test

一個Lifecycle能夠包含clean,compile,test三個Phase。有一些phase依賴於其餘的Phase,有一些是獨立的,如:maven

  • 要執行test,必須先執行compile
  • 執行clean,是不須要執行其餘的Phase的

使用maven構建項目就是執行指定的Phase:工具

  • mvn compile: 將執行compile這個Phase
  • mvn clean test: 將執行clean、compile、test這些Phase

執行一個Phase其實是執行了一系列Phase,直到該Phase爲止:例如執行mvn compile測試

  • validate
  • initialize
  • generate-sources
  • process-sources
  • generate-resources
  • process-resources
  • compile

由於咱們一般沒有在配置文件pom.xml中定義相關的設置,因此這些Phase在執行過程當中什麼也不作。.net

maven執行一個Phase又會觸發一個或多個Goal命令行

如何脫離IDE,使用命令行經過maven構建項目?code

沒有依賴其餘jar,能夠直接運行成功

package com.forme;

/**
 * Hello world!
 *
 */
public class App 
{
    public static void main( String[] args )
    {
        System.out.println( "Hello World!" );
    }
}
mvn clean package
java -cp ./OneWorld-1.0-SNAPSHOT.jar  com.forme.App

若是引入其餘依賴,由於這種方式打出的jar包不包含任何依賴,所以會執行失敗

package com.forme;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

/**
 * Hello world!
 *
 */
public class App 
{
    public static void main( String[] args )
    {
        Log log = LogFactory.getLog(App.class);
        log.info("Hello,world!");
    }
}

總結:

  • 理解maven的概念:Lifecycle\Phase\Goal
    * 使用maven構建項目就是按順序執行一系列Phase
    * 執行Lifecycle就是按順序執行一系列Phase
    * 每執行一個Phase,都會執行該Phase綁定的若干Goal
    * Goal是最小執行任務單元
  • 經常使用的命令:mvn clean test(打出的jar包不會包含依賴)
相關文章
相關標籤/搜索