摘要:之前雖然一直用,但比較依賴于的。什么是是使用開發的項目構建工具,至于它的作用網上相關的文章數不勝數,在此也不再累述。總結至此介紹了的基本使用方式,以上的功能在中也有很好的支持。
之前雖然一直用Maven,但比較依賴于IDE的Maven-Plugins。最近抽了點時間決定系統得學習一下。
什么是MavenMaven是使用Java開發的項目構建工具,至于它的作用網上相關的文章數不勝數,在此也不再累述。對于內容如果你看得云里霧里的話,我建議你直接上手使用一下Maven,就能知道它的魅力所在了。簡而言之,我認為Maven在Java項目的開發過程中完成了以下兩件事情:
統一管理jar
統一開發規范
安裝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"
出現類似的信息就說明成功了。與上面類似Windows下安裝Maven需要配置幾個環境變量,在此也不再累述。
使用Maven新建一個項目終端下輸入:
mvn archetype:generate
可以看到幾百個archetype,archetype類似于模板,輸入你想生成的模板的編號。比如最常見的org.apache.maven.archetypes:maven-archetype-webapp是19,然后我們輸入19回車。接下來還會有各種各樣的參數需要填,這里也作簡單講解。以國產優秀開源項目fastjson為例:
groupId:com.alibaba
arctifactId:fastjson
version:1.1.15
熟悉之后,其實通過一條命令來完成上面的操作:
mvn archetype:generate -DarchetypeArtifactId= maven-archetype-webapp - DarchetypeGroupId= com.reeco -DarchetypeArtifactId= helloworld -DarchetypeVersion= 1.0-SNAPSHOT
你一定會奇怪這么長一串怎么記得住,在類Unix中通過強大的終端功能是可以輕松完成的,輸入mvn archetype:generate -D 按Tab提示,就會出現,然后你只需按照上面的提示輸入幾個首字母就能補全所有的選項了。
我直接復制了官方文檔
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 |
這是我們上面新建的項目目錄結構
└── 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是我們需要關注的重點,平時我們在IDE里也只需要關注它。先來看下我們項目中的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就是我們項目中的一個依賴,對應一個Maven項目。我們只要去http://mvnrepository.com/搜索想要的依賴,然后復制粘貼到pom.xml中即可。
這里還有個scope屬性,一共有五個值
cpmpile:默認作用域,編譯、測試、運行時有效
test:測試時有效
runtime:測試、運行時有效
provided:編譯、測試時有效
system::與provided類似,需要外在提供相應得元素
舉幾個例子說明下:
比如我們項目中的JUnit,我們只在測試時使用,并不需要包含在最終的項目中,所以設置為test
Servlet和JSTL我們只需要在編譯、測試時使用,運行時由于Servlet容器(比如Tomcat)自帶了Servlet的lib,我們也不必自己提供Servlet,所以設置為provided
MySQL數據庫的驅動,我們并不需要編譯它,只需要在運行時去加載它即可,所以設置為runtime
Build除了在上面提到的在build標簽里配置resources之外,我們還可以配置plugins,各種plugin提供了一系列非常重要的功能
org.apache.maven.plugins maven-jar-plugin 2.5.1 1.7
例如上面的plugin指定了項目編譯用的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:驗證Maven項目文件
compile:編譯
test:運行測試
package:項目打包
verify:驗證包
install:將項目安裝到本地倉庫
site:生成項目站點
deploy:將項目發布到遠程倉庫
我們可以通過mvn<生命周期>的方式運行Maven命令,比如常見的
mvn clean install site
Maven允許多個命令,同時執行三個生命周期。這里值得一提的是,運行任何一個生命周期,前面的生命周期都會被執行,所以我們一般執行
mvn install
就能完成編譯、測試、打包。我們嘗試著在我們之前的項目中運行這個命令,可以看到目錄結構發生了變化:
└── 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。那么怎么運行這個項目呢,對于Java Web項目來說,我們可以在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當然還有很多高級用法和最佳實踐,值得我們去探索。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/64662.html
摘要:項目根目錄項目名項目版本號項目目錄打包的名字二依賴管理概述通過在配置依賴坐標,會自動幫我們下載依賴的構件。關于父模塊的依賴配置注意兩點一般都是通過來配置所有依賴及其版本號,然后子模塊,在自己的文件中聲明依賴即可,不用再指定版本,以確保統一。 一、Maven 1.1 為什么寫Maven 工欲善其事,必先利其器。如今Java相關開發,基本離不開Maven、Gradle、MAT、Hudson...
摘要:用于將集成至標準的構建生命周期中,此時執行時就會執行指定的操作,從而實現自定義打包。插件的已棄用會自動執行生命周期。可執行文件執行時出現亂碼使用生成的可執行文件,在中執行時出現亂碼,項目編碼統一為,日志使用框架。得到的是當前的絕對路徑。 「博客搬家」 原地址: 簡書 原發表時間: 2017-04-06 1. 設置 Java JDK 的版本為「JDK 1.8」 可以修改 pom.x...
摘要:是最流行的關系型數據庫管理系統之一,在應用方面,是最好的,關系數據庫管理系統應用軟件。是一種關系數據庫管理系統,關系數據庫將數據保存在不同的表中,而不是將所有數據放在一個大倉庫內,這樣就增加了速度并提高了靈活性。 本章主要是對MyBatis-Plus的初步介紹,包括一些背景知識、環境搭建、初步使用等知識和例子。對于背景知識,主要包含對MyBatis-Plus的特性介紹、為什么使用MyB...
摘要:一環境配置配置版本配置版本安裝,然后對其進行配置。然后繼續下面的命令打開服務打開瀏覽器,輸入回車之后如果看到,表示已經成功運行命令可以關閉。四配置選擇我們的我的之前是,現在用下面的方法刪除,使用來進行開發。 一、IDEA環境配置 1、配置jdkConfigure => Project Default => Project structjdk版本:1.7.0 showImg(https:...
閱讀 917·2021-11-24 09:38
閱讀 925·2021-11-23 09:51
閱讀 2939·2021-11-16 11:44
閱讀 1762·2021-09-22 15:52
閱讀 1626·2021-09-10 11:20
閱讀 1361·2019-08-30 13:47
閱讀 1292·2019-08-29 12:36
閱讀 3293·2019-08-26 10:43