摘要:之前雖然一直用,但比較依賴于的。什么是是使用開發(fā)的項(xiàng)目構(gòu)建工具,至于它的作用網(wǎng)上相關(guān)的文章數(shù)不勝數(shù),在此也不再累述。總結(jié)至此介紹了的基本使用方式,以上的功能在中也有很好的支持。
之前雖然一直用Maven,但比較依賴于IDE的Maven-Plugins。最近抽了點(diǎn)時間決定系統(tǒng)得學(xué)習(xí)一下。
什么是MavenMaven是使用Java開發(fā)的項(xiàng)目構(gòu)建工具,至于它的作用網(wǎng)上相關(guān)的文章數(shù)不勝數(shù),在此也不再累述。對于內(nèi)容如果你看得云里霧里的話,我建議你直接上手使用一下Maven,就能知道它的魅力所在了。簡而言之,我認(rèn)為Maven在Java項(xiàng)目的開發(fā)過程中完成了以下兩件事情:
統(tǒng)一管理jar
統(tǒng)一開發(fā)規(guī)范
安裝Ubuntu下安裝非常簡單:
sudo apt-get install maven
終端下mvn -v
Maven home: /opt/maven Java version: 1.8.0_25, vendor: Oracle Corporation Java home: /opt/java/jre Default locale: en_US, platform encoding: UTF-8 OS name: "linux", version: "3.13.0-44-generic", arch: "amd64", family: "unix"
出現(xiàn)類似的信息就說明成功了。與上面類似Windows下安裝Maven需要配置幾個環(huán)境變量,在此也不再累述。
使用Maven新建一個項(xiàng)目終端下輸入:
mvn archetype:generate
可以看到幾百個archetype,archetype類似于模板,輸入你想生成的模板的編號。比如最常見的org.apache.maven.archetypes:maven-archetype-webapp是19,然后我們輸入19回車。接下來還會有各種各樣的參數(shù)需要填,這里也作簡單講解。以國產(chǎn)優(yōu)秀開源項(xiàng)目fastjson為例:
groupId:com.alibaba
arctifactId:fastjson
version:1.1.15
熟悉之后,其實(shí)通過一條命令來完成上面的操作:
mvn archetype:generate -DarchetypeArtifactId= maven-archetype-webapp - DarchetypeGroupId= com.reeco -DarchetypeArtifactId= helloworld -DarchetypeVersion= 1.0-SNAPSHOT
你一定會奇怪這么長一串怎么記得住,在類Unix中通過強(qiáng)大的終端功能是可以輕松完成的,輸入mvn archetype:generate -D 按Tab提示,就會出現(xiàn),然后你只需按照上面的提示輸入幾個首字母就能補(bǔ)全所有的選項(xiàng)了。
我直接復(fù)制了官方文檔
PATH | ACTIVITY |
---|---|
src/main/java | Application/Library sources |
src/main/resources | Application/Library resources |
src/main/filters | Resource filter files |
src/main/webapp | Web application sources |
src/test/java | Test sources |
src/test/resources | Test resources |
src/test/filters | Test resource filter files |
src/it | Integration Tests (primarily for plugins) |
src/assembly | Assembly descriptors |
src/site | Site |
LICENSE.txt | Project"s license |
NOTICE.txt | Notices and attributions required by libraries that the project depends on |
README.txt | Project"s readme |
這是我們上面新建的項(xiàng)目目錄結(jié)構(gòu)
└── helloworld ├── pom.xml ├── src │ └── main │ ├── resources │ └── webapp │ ├── index.jsp │ └── WEB-INF │ └── web.xml
與推薦的相比,我們還需要添加幾個目錄
src/main/java
src/test/java
src/test/resources
如果你覺得resources不夠,還可以添加其他的資源文件夾,然后像下面這樣在pom.xml中配置一下
pom.xml. src/main/config
pom.xml是我們需要關(guān)注的重點(diǎn),平時我們在IDE里也只需要關(guān)注它。先來看下我們項(xiàng)目中的pom.xml
Dependencies4.0.0 com.mycompany.helloworld helloworld war 1.0-SNAPSHOT helloworld Maven Webapp http://maven.apache.org junit junit 3.8.1 test helloworld
dependencies中每一個dependency就是我們項(xiàng)目中的一個依賴,對應(yīng)一個Maven項(xiàng)目。我們只要去http://mvnrepository.com/搜索想要的依賴,然后復(fù)制粘貼到pom.xml中即可。
這里還有個scope屬性,一共有五個值
cpmpile:默認(rèn)作用域,編譯、測試、運(yùn)行時有效
test:測試時有效
runtime:測試、運(yùn)行時有效
provided:編譯、測試時有效
system::與provided類似,需要外在提供相應(yīng)得元素
舉幾個例子說明下:
比如我們項(xiàng)目中的JUnit,我們只在測試時使用,并不需要包含在最終的項(xiàng)目中,所以設(shè)置為test
Servlet和JSTL我們只需要在編譯、測試時使用,運(yùn)行時由于Servlet容器(比如Tomcat)自帶了Servlet的lib,我們也不必自己提供Servlet,所以設(shè)置為provided
MySQL數(shù)據(jù)庫的驅(qū)動,我們并不需要編譯它,只需要在運(yùn)行時去加載它即可,所以設(shè)置為runtime
Build除了在上面提到的在build標(biāo)簽里配置resources之外,我們還可以配置plugins,各種plugin提供了一系列非常重要的功能
org.apache.maven.plugins maven-jar-plugin 2.5.1 1.7
例如上面的plugin指定了項(xiàng)目編譯用的JDK版本為1.7,具體的plugin可以參考這兩篇文章:
http://www.cnblogs.com/crazy-fox/archive/2012/02/09/2343722.html
http://maven.apache.org/plugins/index.html
LifecycleMaven一共有9種生命周期:
clean:清理target目錄
validate:驗(yàn)證Maven項(xiàng)目文件
compile:編譯
test:運(yùn)行測試
package:項(xiàng)目打包
verify:驗(yàn)證包
install:將項(xiàng)目安裝到本地倉庫
site:生成項(xiàng)目站點(diǎn)
deploy:將項(xiàng)目發(fā)布到遠(yuǎn)程倉庫
我們可以通過mvn<生命周期>的方式運(yùn)行Maven命令,比如常見的
mvn clean install site
Maven允許多個命令,同時執(zhí)行三個生命周期。這里值得一提的是,運(yùn)行任何一個生命周期,前面的生命周期都會被執(zhí)行,所以我們一般執(zhí)行
mvn install
就能完成編譯、測試、打包。我們嘗試著在我們之前的項(xiàng)目中運(yùn)行這個命令,可以看到目錄結(jié)構(gòu)發(fā)生了變化:
└── helloworld ├── pom.xml ├── src │ └── main │ ├── resources │ └── webapp │ ├── index.jsp │ └── WEB-INF │ └── web.xml └── target ├── classes ├── helloworld │ ├── index.jsp │ ├── META-INF │ └── WEB-INF │ ├── classes │ └── web.xml ├── helloworld.war └── maven-archiver └── pom.properties
多了一個我們用于存放編譯文件的目錄target。那么怎么運(yùn)行這個項(xiàng)目呢,對于Java Web項(xiàng)目來說,我們可以在build中通過plugin部署到tomcat下:
org.apache.tomcat.maven tomcat7-maven-plugin 2.2
然后:
mvn tomcat7:run-warsetting.xml
setting.xml是Maven全局配置文件,我們可以在里面配置Maven依賴下載的鏡像和本地倉庫目錄。
我目前使用的是oschina的Maven鏡像,下面的使用說明也講解得非常清楚。
http://maven.oschina.net/help.html
至此介紹了Maven的基本使用方式,以上的功能在IDE中也有很好的支持。Maven當(dāng)然還有很多高級用法和最佳實(shí)踐,值得我們?nèi)ヌ剿鳌?/p>
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/64662.html
摘要:項(xiàng)目根目錄項(xiàng)目名項(xiàng)目版本號項(xiàng)目目錄打包的名字二依賴管理概述通過在配置依賴坐標(biāo),會自動幫我們下載依賴的構(gòu)件。關(guān)于父模塊的依賴配置注意兩點(diǎn)一般都是通過來配置所有依賴及其版本號,然后子模塊,在自己的文件中聲明依賴即可,不用再指定版本,以確保統(tǒng)一。 一、Maven 1.1 為什么寫Maven 工欲善其事,必先利其器。如今Java相關(guān)開發(fā),基本離不開Maven、Gradle、MAT、Hudson...
摘要:用于將集成至標(biāo)準(zhǔn)的構(gòu)建生命周期中,此時執(zhí)行時就會執(zhí)行指定的操作,從而實(shí)現(xiàn)自定義打包。插件的已棄用會自動執(zhí)行生命周期。可執(zhí)行文件執(zhí)行時出現(xiàn)亂碼使用生成的可執(zhí)行文件,在中執(zhí)行時出現(xiàn)亂碼,項(xiàng)目編碼統(tǒng)一為,日志使用框架。得到的是當(dāng)前的絕對路徑。 「博客搬家」 原地址: 簡書 原發(fā)表時間: 2017-04-06 1. 設(shè)置 Java JDK 的版本為「JDK 1.8」 可以修改 pom.x...
摘要:是最流行的關(guān)系型數(shù)據(jù)庫管理系統(tǒng)之一,在應(yīng)用方面,是最好的,關(guān)系數(shù)據(jù)庫管理系統(tǒng)應(yīng)用軟件。是一種關(guān)系數(shù)據(jù)庫管理系統(tǒng),關(guān)系數(shù)據(jù)庫將數(shù)據(jù)保存在不同的表中,而不是將所有數(shù)據(jù)放在一個大倉庫內(nèi),這樣就增加了速度并提高了靈活性。 本章主要是對MyBatis-Plus的初步介紹,包括一些背景知識、環(huán)境搭建、初步使用等知識和例子。對于背景知識,主要包含對MyBatis-Plus的特性介紹、為什么使用MyB...
摘要:一環(huán)境配置配置版本配置版本安裝,然后對其進(jìn)行配置。然后繼續(xù)下面的命令打開服務(wù)打開瀏覽器,輸入回車之后如果看到,表示已經(jīng)成功運(yùn)行命令可以關(guān)閉。四配置選擇我們的我的之前是,現(xiàn)在用下面的方法刪除,使用來進(jìn)行開發(fā)。 一、IDEA環(huán)境配置 1、配置jdkConfigure => Project Default => Project structjdk版本:1.7.0 showImg(https:...
閱讀 928·2021-11-24 09:38
閱讀 944·2021-11-23 09:51
閱讀 2951·2021-11-16 11:44
閱讀 1782·2021-09-22 15:52
閱讀 1686·2021-09-10 11:20
閱讀 1411·2019-08-30 13:47
閱讀 1305·2019-08-29 12:36
閱讀 3340·2019-08-26 10:43