1. 程式人生 > >Maven之(八)約定優於配置

Maven之(八)約定優於配置

maven的配置檔案看似很複雜,其實只需要根據專案的實際背景,設定個別的幾個配置項而已。maven有自己的一套預設配置,使用者除非必要,並不需要去修改那些約定內容。這就是所謂的“約定優於配置”。

檔案目錄

maven預設的檔案存放結構如下:


每一個階段的任務都知道怎麼正確完成自己的工作,比如compile任務就知道從src/main/java下編譯所有的java檔案,並把它的輸出class檔案存放到target/classes中。

對maven來說,採用"約定優於配置"的策略可以減少修改配置的工作量,也可以降低學習成本,更重要的是,給專案引入了統一的規範。

版本規範

maven有自己的版本規範,一般是如下定義:

 <majorversion>.<minor version>.<incremental version>-<qualifier>,

比如1.2.3-beta-01。要說明的是,maven自己判斷版本的演算法是major,minor,incremental部分用數字比較,qualifier部分用字串比較,所以要小心 alpha-2和alpha-15的比較關係,最好用 alpha-02的格式。

maven在版本管理時候可以使用幾個特殊的字串 SNAPSHOT ,LATEST ,RELEASE 。比如"1.0-SNAPSHOT"。各個部分的含義和處理邏輯如下說明:

l   SNAPSHOT

如果一個版本包含字串"SNAPSHOT",Maven就會在安裝或釋出這個元件的時候將該符號展開為一個日期和時間值,轉換為UTC時間。例如,"1.0-SNAPSHOT"會在2010年5月5日下午2點10分發布時候變成1.0-20100505-141000-1。

這個詞只能用於開發過程中,因為一般來說,專案組都會頻繁釋出一些版本,最後實際釋出的時候,會在這些snapshot版本中尋找一個穩定的,用於正式發 布,比如1.4版本釋出之前,就會有一系列的1.4-SNAPSHOT,而實際釋出的1.4,也是從中拿出來的一個穩定版。

l   LATEST

指某個特定構件的最新發布,這個釋出可能是一個釋出版,也可能是一個snapshot版,具體看哪個時間最後。

l   RELEASE

指最後一個釋出版。

Maven變數

除了在setting.xml以及pom.xml當中用properties定義的常量,maven還提供了一些隱式的變數,用來訪問系統環境變數。

類別

例子

內建屬性

${basedir}表示專案根目錄,即包含pom.xml檔案的目錄

${version}表示專案版本

${project.basedir}同${basedir}

${project.baseUri}表示專案檔案地址

${maven.build.timestamp}表示專案構件開始時間

setting屬性

${settings.localRepository }表示本地倉庫路徑

POM屬性

${project.build.directory}表示主原始碼路徑

${project.build.sourceEncoding}表示主原始碼的編碼格式

${project.build.sourceDirectory}表示主原始碼路徑

${project.build.finalName}表示輸出檔名稱

${project.version}表示專案版本,與${version}相同

Java系統屬性

${user.home}表示使用者目錄

${java.version}表示Java版本

環境變數屬性

${env.JAVA_HOME}表示JAVA_HOME環境變數的值

${env.HOME }表示使用者目錄

上級工程變數

上級工程的pom中的變數用字首 ${project.parent } 引用。上級工程的版本也可以這樣引用: ${parent.version }

相關推薦

Maven約定優於配置

maven的配置檔案看似很複雜,其實只需要根據專案的實際背景,設定個別的幾個配置項而已。maven有自己的一套預設配置,使用者除非必要,並不需要去修改那些約定內容。這就是所謂的“約定優於配置”。 檔案目錄maven預設的檔案存放結構如下:每一個階段的任務都知道怎麼正確完成自己

SpringMVC16 - 約定優於配置支援

參考:https://docs.spring.io/spring/docs/4.3.20.RELEASE/spring-framework-reference/htmlsingle/#mvc-coc   對於很多專案來說,堅持已建立的約定並且具有合理的預設值正是他們(專案)所需要的

Mavenpom.xml配置檔案詳解

setting.xml主要用於配置maven的執行環境等一系列通用的屬性,是全域性級別的配置檔案;而pom.xml主要描述了專案的maven座標,依賴關係,開發者需要遵循的規則,缺陷管理系統,組織和licenses,以及其他所有的專案相關因素,是專案級別的配置檔案。

DPDK——vhost庫

設置 _id lba 系列 要求 是個 物理內存 文件描述符 合並 轉:http://www.cnblogs.com/danxi/p/6652725.html vhost庫實現了一個用戶空間的virtio net server,允許用戶直接處理virtio ring

Spring:Spring配置Bean

兩種 exceptio 名稱 CA exception 通過 文件系統 publish 基礎 在Spring的IOC容器裏配置Bean 配置Bean形式:基於xml文件方式、基於註解的方式 在xml文件中通過bean節點配置bean: <?xml versi

Stereo Matching文獻筆記:《On Building an Accurate Stereo Matching System on Graphics Hardware》讀後感

版權宣告:作者:迷霧forest(請隨意轉載,若顧及到博主打字耗費的卡路里,請新增博主小名,權當娛樂)    https://blog.csdn.net/wsj998689aa/article/details/49403353 週末嘍~!又有時間寫寫部落格了,繼續之前的

Python3基礎if else判斷

一、基本使用 if condition: true_expressions else: false_expressions 當 if 判斷條件為 True,執行 true_expressions 語句; 如果為 False,將執行 else 的內部的 false

Python資料處理Numpy array分割

一、建立資料 匯入模組並建立3行4列的Array >>> import numpy as np >>> A=np.arange(12).reshape((3,4)) >>> print(A) [[ 0 1 2 3] [

關於SpringCloud微服務雲架構構建B2B2C電子商務平臺-訊息匯流排(Spring Cloud Bus)

  Spring Cloud Bus 將分散式的節點用輕量的訊息代理連線起來。它可以用於廣播配置檔案的更改或者服務之間的通訊,也可以用於監控。本文要講述的是用Spring Cloud Bus實現通知微服務架構的配置檔案的更改。 一、準備工作本文還是基於上一篇文章來實現。按照官方文件,我們只需要在

appium自動化基礎環境配置

APPIUM 基礎環境配置 文章來源:企鵝號 - 全棧軟體測試 1、安裝配置JDK 這個不用多說 常規操作 2、Android SDK 安裝 官方下載地址:https://developer.android.com/studio/index.html?hl=zh-cn 其他地址:

MavenMaven是什麼

首先,Maven的正確發音是[ˈmevən],而不是“馬瘟”以及其他什麼瘟。Maven在美國是一個口 語化的詞語,代表專家、內行的意思,約等於北京話中的老炮兒。一個對Maven比較正式的定義是這麼說的:Maven是一個專案管理工具,它包含了一個專案物件模型 (P

SpringBootSpring Boot配置詳解

  一、@Value賦值 當我們建立一個springboot專案的時候,系統預設會為我們在src/main/java/resources目錄下建立一個application.properties。個人習慣,我會將application.properties改為application

Java程式設計師從笨鳥到菜鳥反射和代理機制

   反射和代理機制是JDK5.0提供的java新特性,反射的出現打破了java一些常規的規則,如,私有變數不可訪問。但反射和代理在學習過程中也是一個比較難理解的知識點。本人曾經學過一段時間的反射和代理,但好長時間不用好像有點生疏了,當時學的時候就理解的不是很透徹,這次總結算是重新學習一遍吧,如果有什麼錯誤,

SpringCloud微服務雲架構構建B2B2C電子商務平臺-訊息匯流排(Spring Cloud Bus)

Spring Cloud Bus 將分散式的節點用輕量的訊息代理連線起來。它可以用於廣播配置檔案的更改或者服務之間的通訊,也可以用於監控。本文要講述的是用Spring Cloud Bus實現通知微服務架構的配置檔案的更改。 一、準備工作 本文還是基於上一篇文章來實現。按照官方文件,我們只需要在配

leetcode 虐我篇Reverse Integer

    Reverse Integer 這道題的AC率也很高,在打擊到沒信心的時候可以來做做。先來看看題目: Reverse digits of an integer. Example1: x = 123, return 321 Example2: x = -123, r

【朝花夕拾】效能優化篇AIDL與Android跨程序通訊

        一、Linux程序間通訊   1、程序隔離         在作業系統中,程序與程序間的記憶體和資料都是不共享的。兩個程序就好像大海中相互獨立的兩個島嶼,各自生活在互相平行的兩個世界中,互不干擾,各

Maven依賴關係

在maven的管理體系中,各個專案組成了一個複雜的關係網,但是每個專案都是平等的,是個沒有貴賤高低,眾生平等的世界,全球每個專案從理論上來說都可以相互依賴。就是說,你跟開發Spring的大牛們平起平坐,你的專案可以依賴Spring專案,Spring專案也可以依賴你的專案(雖然

Hadoop系列CentOS7安裝配置及SSH無密碼驗證配置

由於最近在進行關於Hadoop的學習,開始重新搭建一套Hadoop的環境,和之前自己搭建的環境的區別在於作業系統的版本,本次採用的為CentOS7.2的版本,7相對於6的版本改動較大。一些命令都不太一樣,其中在其核心中加了Docker,因此在後期裝相關軟體時不需要重新安

網路乾貨,無論是運維還是開發都要知道的網路知識系列

相關網路操作知識 配置linux網絡卡 網絡卡配置檔案 /etc/sysconfig/network-scripts/ifcfg-eth0 setup-network config就是網絡卡配置檔案。 網絡卡生效: 推薦:ifdown,ifup 2、網路如果沒有配置DNS,那麼再/etc/re

Deep Learning深度學習學習筆記整理系列

轉自:http://blog.csdn.net/zouxy09/article/details/8782018 Deep Learning(深度學習)學習筆記整理系列 作者:Zouxy version 1.0 2013-04-08 宣告: 1)該Deep