1. 程式人生 > >Maven使用詳解:Maven的概述(一)

Maven使用詳解:Maven的概述(一)

先決條件(Prerequisites)

你一定已經瞭解瞭如何安裝maven在你的電腦上,如果你還不知道改如何安裝maven的話,你可以通過詢問身邊的同事或者同學,也可以通過網路搜尋來檢視如何安裝,這裡我們對這個問題不做過多的解釋。

Maven安裝(Installation)

Maven是一個JAVA工具,所以你在安裝前要保證你已經在自己的電腦上安裝了JAVA。首先下載Maven並且跟著它的安裝介紹進行安裝,安裝完成後,然後開啟你的電腦的“終端”或者是“命令提示符”,然後輸入:

mvn --version

如果安裝成功的話,將會輸出安裝的maven的版本資訊,例如:
Apache Maven 3.3.3 (7994120775791599e205a5524ec3e0dfe41d4a06; 2015-04-22T19:57:37+08:00)
Maven home: /Users/apache-maven-3.3.3
Java version: 1.7.0_79, vendor: Oracle Corporation
Java home: /Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/jre
Default locale: zh_CN, platform encoding: UTF-8
OS name: "mac os x", version: "10.11.4", arch: "x86_64", family: "mac"

根據你的網路設定,你可能需要額外的配置一些資訊,如果需要的話檢視一下Maven配置資訊的方法。

如果你使用的是Window系統的電腦,你需要檢視一下Windows系統Maven安裝方法介紹以確保你的Maven可以正常的執行。

建立一個專案(Create a project)

現在你需要建立一個目錄用來存放你即將建立的專案,然後通過命令列的方式進入你當前的目錄中去,然後執行如下的Maven命令:

mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false

如果你只是安裝了Maven的話,上面的命令可能需要一段時間來執行,只是因為Maven需要下載一些最新的模板(外掛的jar包和一些其它檔案)在你的本地倉庫,你也可能多次的執行這個命令來確保成功,這是因為遠端伺服器有可能在你下載完成前已經超過了最長連線時間造成了中斷,不要擔心,多嘗試幾次就好啦。

下面便是你建立的專案的標準檔案結構

my-app
|-- pom.xml
`-- src
    |-- main
    |   `-- java
    |       `-- com
    |           `-- mycompany
    |               `-- app
    |                   `-- App.java
    `-- test
        `-- java
            `-- com
                `-- mycompany
                    `-- app
                        `-- AppTest.java
該目錄下的 src/main/java 目錄下面包含的是專案資原始碼,src/test/java 目錄下面包含的是測試程式碼,pox.xml檔案中的是專案物件模型。

pom檔案(The Pom)

pom.xml檔案是Maven專案的核心配置檔案。它是包含了多數你建立專案所需要的資訊的一個單一的配置檔案。因為Pom檔案具有一定的複雜性因為它的巨大和令人畏懼的特性,但是我們並不需要全部的理解這些錯綜複雜的失誤,只是需要學會我們實際會應用到的即可。

<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.mycompany.app</groupId>
  <artifactId>my-app</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>jar</packaging>

  <name>Maven Quick Start Archetype</name>
  <url>http://maven.apache.org</url>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.8.2</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
</project>

我們需要做些什麼呢(What did I just do?)

你執行的Maven命令:archetype:generate和各種各樣的引數命令。包含了archetype字首的命令是外掛的一些命令。如果你更加熟悉Ant工具的話,你可以將此設想為相似的任務。依靠archetype這些命令可以建立了普通的專案,現在可以滿足我們需求的一個外掛是收集了相應目標的絕大部分公共意圖。例如Jboss-maven-plugin,絕大部分目的是用來應對各種各樣的jboss元件。

構建專案(Build the project)

mvn package

這個命令列會打印出各種各樣的行為,並且以下圖這樣的方式結束
[INFO] Building jar: /Users/my-app/my-app/target/my-app-1.0-SNAPSHOT.jar
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 46.853 s
[INFO] Finished at: 2016-03-31T11:00:14+08:00
[INFO] Final Memory: 14M/120M
[INFO] ------------------------------------------------------------------------

並不像第一次執行的命令(archetype:generate),你可能注意到第二個命令僅僅是一個單詞:package,與其說是一個命令,倒不如說是一個階段。每個階段都是構建專案生命週期的一步通過整個序列的階段。當某一階段執行時,Maven將會執行該序列中的每個階段通過已經定義好的序列。例如,如果我們執行了compile階段,事實上下面的每個階段都會別執行:

1、validate
2、generate-sources
3、process-sources
4、generate-resources
5、process-resources
6、compile

你如果有最新的compiled和packaged JAR並輸入下面的命令:
java -cp target/my-app-1.0-SNAPSHOT.jar com.mycompany.app.App

接下來將會輸出:
Hello World!

執行Maven工具(Running Maven tools)

儘管很難有一個綜合的列表,但是下面的這些階段絕大部分都是我們專案生命週期需要執行的:

  • validate: 驗證專案的正確性和專案所必需的資訊是否可用
  • compile: 編譯專案程式碼
  • test: 測試編譯的程式碼利用恰當的測試框架,這些測試並不需要專案打包或者部署
  • package: 將編譯好的程式碼按照可分配的格式進行打包,例如打成一個JAR包
  • integration-test: 加工並且部署編譯好的包,如果有必要的話將環境資訊插入以保證整合的測試可以正常的執行
  • verify: 執行某些驗證以判定該包是可執行的並且滿足質量標準
  • install: 安裝該包到本地倉庫,供本地的其他專案作為一個附屬進行使用
  • deploy: 進行整合或者部署到釋出環境中,拷貝最終版本到遠端倉庫已供其他開發或者是專案使用

這裡還有兩個用於構建Maven生命週期的不屬於預設列表裡面命令,他們分別是:

  • clean: 清理掉之前構建的專案檔案
  • site: 為該專案生成站點文件
每個階段實際上都對映到了這些基礎的命令。明確的命令執行每個階段是依賴於專案的打包型別的。例如,如果專案的型別是JAR的話,打包的時候將會執行jar:jar,如果專案的型別是WAR的話,你的打包的時候回執行war:war

一個有趣的事情需要被注意的是:階段和命令有可能會按照一個特定的序列來執行,例如:

<span style="font-size:18px;">mvn clean dependency:copy-dependencies package</span>

上面的命令將會清理該專案生成檔案,拷貝附屬專案,然後重新打包該專案(執行所有的階段直到打包完成),執行結果如下:
Results :

Tests run: 1, Failures: 0, Errors: 0, Skipped: 0

[INFO] 
[INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ my-app ---
[INFO] Building jar: /Users/my-app/my-app/target/my-app-1.0-SNAPSHOT.jar
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 01:57 min
[INFO] Finished at: 2016-03-31T14:07:41+08:00
[INFO] Final Memory: 17M/158M
[INFO] ------------------------------------------------------------------------

生成站點(Generating the Site)
<span style="font-size:18px;">mvn site</span>

這個階段依靠專案中的Pom檔案生成一個站點,你能夠在target/site下面看到生成的文件檔案,執行結果如下
<span style="font-size:18px;">[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 20.585 s
[INFO] Finished at: 2016-03-31T14:45:38+08:00
[INFO] Final Memory: 30M/355M
[INFO] ------------------------------------------------------------------------</span>

結論(Conclusion)

我們希望這裡的快速的概述能夠激起你對多元化的Maven的濃厚的興趣。這裡的只是一個被刪減的快速瀏覽手冊,現在你準備好更加綜合的詳細的關於該平臺的所有行為。

相關推薦

ALVFunction ALV

Function ALV Layout結構 Fieldcat結構 ALV相關函式 簡單例項 Fieldcat動態建立 通過程式設計建立 通過REUSE_ALV_FIELDCATALOG_MERGE函式建立 自定義ALV工具條 快速拷貝GUI Status

Spring Boot Actuator與深入應用Actuator 1.x

《Spring Boot Actuator詳解與深入應用》預計包括三篇,第一篇重點講Spring Boot Actuator 1.x的應用與定製端點;第二篇將會對比Spring Boot Actuator 2.x 與1.x的區別,以及應用和定製2.x的端點;第三篇將會介紹Actuator metric指

C#泛型

安全 情況 重用 模板 信息 普通 cast 綁定 封閉式   一、C#中的泛型引入了類型參數的概念,類似於C++中的模板,類型參數可以使類型或方法中的一個或多個類型的指定推遲到實例化或調用時,使用泛型可以更大程度的重用代碼、保護類型安全性並提高性能;可以創建自定義的泛型類

例項js閉包閉包基本概念及其作用推導

  在學習前端的過程中,不可避免的要學習到js閉包這個知識點,很多朋友感到對閉包很難理解,也不清楚它有什麼用。本文就詳細介紹一下閉包,並通過幾個小例子來說明下閉包的用處。  一、閉包的概念       閉包的英文單詞是Closure,我先給閉包可

C#泛型 C#泛型 C#泛型

  一、前面兩篇文章分別介紹了定義泛型型別、泛型委託、泛型介面以及宣告泛型方法:   詳解C#泛型(一)   詳解C#泛型(二)   首先回顧下如何構建泛型類: public class MyClass<T> { public void MyFunc() {

【MapReduce及原始碼解析】——分片輸入、Mapper及Map端Shuffle過程

title: 【MapReduce詳解及原始碼解析(一)】——分片輸入、Mapper及Map端Shuffle過程 date: 2018-12-03 21:12:42 tags: Hadoop categories: 大資料 toc: true 點選檢視我的部落格:Josonlee’

TensorFlow貓狗識別--讀取自己的資料集

資料集下載 連結: https://pan.baidu.com/s/1SlNAPf3NbgPyf93XluM7Fg 密碼: hpn4 資料集分別有12500張cat,12500張dog 讀取資料集 資料集的讀取,查閱了那麼多文件,大致瞭解到,資料集的讀取方法大概會分為兩種

javascript拖拽基礎介紹

人類喜歡將工作或活動步驟化:第一步、第二步、第三步等,因為分解讓人類得以分工並優化區域性。 一個作家構思一部鴻篇鉅製,必然要考慮將內容劃分為幾個部分,每個部分刻畫相應的人物背景故事. 同理,我們也將今天的主角拖拽分為 拖、放兩個步驟,來討論分析. 拖拽的歷史 拖拽成為一項標準也是近幾年的事,屬於

ESElasticSearch-概述

ElasticSewrch(ES)與solr一樣也是一個基於lucene的搜尋伺服器,它基於RESTfulweb介面,相對於solr,它更適合於海量級的搜尋,同時ES的實時性比solr要好,延遲最多1秒,另外它的可擴充套件性也比較好,在ES的叢集中可以很方便的增加一個節點。 ES和solr一樣,

計算機網路--P2P對等網路—BitTorrent協議

注:本篇文章內容借鑑自:淺入淺出BitTorrent協議,其中加入了博主的部分原創,感謝,侵刪~ 對等網路的概念 以下定義主要摘抄自維基百科與中科院計算技術研究所: 對等式網路(peer-to-peer,簡稱P2P),又稱點對點技術,是無中心伺服器、

JS作用域

一、什麼是作用域 儲存和訪問變數,是任何一種程式語言最基本的功能之一,變數存在哪裡?程式需要時如何找到它?這些問題需要一套良好的規則來規範,這套規則,就成為作用域。 二、編譯原理 js通常歸類為解釋語言,但它其實是編譯語言,和傳統編譯語言不同,它不是提前編譯,編譯結果也不能在分散式系統中進行移植。js引

完整 swift GCD系列dispatch_async;dispatch_sync;dispatch_async_f;dispatch_sync_f

為什麼要寫這個系列,因為百度了一下,找了很多都是些片面的Blog,拷貝來拷貝去的,寫的也很粗糙。 所以,我要寫這個系列,儘量把官網文件中GCD的強大功能完整的表達出來。方便自己,也方便別人,如果發現有問題,歡迎提出 本教程的計劃:在完整的看過GCD的官方文件之後,我實在想

Maven使用Maven概述

先決條件(Prerequisites) 你一定已經瞭解瞭如何安裝maven在你的電腦上,如果你還不知道改如何安裝maven的話,你可以通過詢問身邊的同事或者同學,也可以通過網路搜尋來檢視如何安裝,這裡我們對這個問題不做過多的解釋。 Maven安裝(Installation)

Zookeeper-概述

可靠的 配置 應用程序 們的 共享 主機 專註 會有 減少 ZooKeeper是一種分布式協調服務,用於管理大型主機。在分布式環境中協調和管理服務是一個復雜的過程。ZooKeeper通過其簡單的架構和API解決了這個問題。ZooKeeper允許開發人員專註於核心應用程序邏輯

Maven概述

Maven是什麼? Apache Maven is a software project management and comprehension tool. Based on the conc

轉載【項目管理和構建】——Maven下載、安裝和配置

文檔 port 目標 軟件項目管理 strong mar temp mave work 原文鏈接: http://blog.csdn.net/jiuqiyuliang/article/details/41076215 在現實

基於Maven的SSM總體架構設計

基於Maven的SSM總體架構設計(一) 1 概述 1.1 編寫目的 1.2 讀者物件 1.3 引用檔案 1.4 術語表 2 相關技術介紹 2.1 Spring框架介紹 2.1.1

Spring Boot Actuator與深入應用Actuator 2.x

《Spring Boot Actuator詳解與深入應用》預計包括三篇,第一篇重點講Spring Boot Actuator 1.x的應用與定製端點;第二篇將會對比Spring Boot Actuator 2.x 與1.x的區別,以及應用和定製2.x的端點;第三篇將會介紹Actuator metric指

Spring Boot Actuator與深入應用Prometheus+Grafana應用監控

《Spring Boot Actuator詳解與深入應用》預計包括三篇,第一篇重點講Spring Boot Actuator 1.x的應用與定製端點;第二篇將會對比Spring Boot Actuator 2.x 與1.x的區別,以及應用和定製2.x的端點;第三篇將會介紹Actuator metric指

TCP-IP滑動視窗Sliding Window

 TCP的優勢 從傳輸資料來講,TCP/UDP以及其他協議都可以完成資料的傳輸,從一端傳輸到另外一端,TCP比較出眾的一點就是提供一個可靠的,流控的資料傳輸,所以實現起來要比其他協議複雜的多,先來看下這兩個修飾詞的意義:  1. Reliability ,提供TCP的可