您好,登錄后才能下訂單哦!
這篇文章主要介紹了java中maven是什么,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
Maven定義
Maven 是一個(gè)項(xiàng)目管理工具,它包含了一個(gè)項(xiàng)目對象模型 (Project Object Model), 一組標(biāo)準(zhǔn)集合, 一個(gè)項(xiàng)目生命周期(Project Lifecycle),一個(gè)依賴管理系統(tǒng)(Dependency Management System),和用來運(yùn)行定義在生命周期階段(phase)中插件(plugin)目標(biāo)(goal)的邏輯。 當(dāng)你使用 Maven 的時(shí)候,你用一個(gè)明確定義的項(xiàng)目對象模型來描述你的項(xiàng)目,然后 Maven 可以應(yīng)用橫切的邏輯,這些邏輯來自一組共享的(或者自定義的)插件。Maven是基于項(xiàng)目對象模型(POM),可以通過一小段描述信息來管理項(xiàng)目的構(gòu)建、報(bào)告和文檔的軟件項(xiàng)目管理工具。
在沒有自定義的情況下,源代碼假定是在 ${basedir}/src/main/java,資源文件假定是在${basedir}/src/main/resources 。測試代碼假定是在 ${basedir}/src/test 。項(xiàng)目假定會產(chǎn)生一個(gè) JAR 文件。 Maven 假定你想要把編譯好的字節(jié)碼放到${basedir}/target/classes 并且在 ${basedir}/target 創(chuàng)建一個(gè)可分發(fā)的 JAR文件。 雖然這看起來無關(guān)緊要,但是想想大部分基于 Ant 的構(gòu)建必須為每個(gè)子項(xiàng)目定義這些目錄。 Maven 對約定優(yōu)于配置的應(yīng)用不僅僅是簡單的目錄位置, Maven 的核心插件使用了一組通用的約定,以用來編譯源代碼,打包可分發(fā)的構(gòu)件,生成 web 站點(diǎn),還有許多其他的過程。
Maven插件的全局性重用
Maven 的核心,解析一些 XML 文檔,管理生命周期與插件。 Maven 被設(shè)計(jì)成將主要的職責(zé)委派給一組 Maven 插件,這些插件可以影響 Maven 生命周期,提供對目標(biāo)的訪問。絕大多數(shù) Maven 的動作發(fā)生于 Maven 插件的目標(biāo),如編譯源碼,打包二進(jìn)制代碼,發(fā)布站點(diǎn)和其它構(gòu)建任務(wù)。從 Apache 下載的 Maven 不知道如何打包 WAR 文件,也不知道如何運(yùn)行單元測試, Maven 大部分的智能是由插件實(shí)現(xiàn)的,而插件從 Maven 倉庫獲得。第一次你用全新的 Maven 安裝運(yùn)行諸如 mvn install 命令的時(shí)候,它會從中央 Maven 倉庫下載大部分核心 Maven 插件。這不僅僅是一個(gè)最小化 Maven分發(fā)包大小的技巧,這種方式更能讓你升級插件以給你項(xiàng)目的構(gòu)建提高能力。 Maven從遠(yuǎn)程倉庫獲取依賴和插件的這一事實(shí)允許了構(gòu)建邏輯的全局性重用。
依賴管理
由于項(xiàng)目是根據(jù)一個(gè)包含組標(biāo)識符,構(gòu)件標(biāo)識符和版本的唯一的坐標(biāo)定義的。項(xiàng)目間可以使用這些坐標(biāo)來聲明依賴
遠(yuǎn)程倉庫
和項(xiàng)目依賴相關(guān)的,我們可以使用定義在項(xiàng)目對象模型( POM)中的坐標(biāo)來創(chuàng)建 Maven 構(gòu)件的倉庫。
Ant 和 Maven 的區(qū)別
Apache Ant
Ant 沒有正式的約定如一個(gè)一般項(xiàng)目的目錄結(jié)構(gòu), 你必須明確的告訴 Ant哪里去找源代碼,哪里放置輸出。隨著時(shí)間的推移,非正式的約定出現(xiàn)了,但是它們還沒有在產(chǎn)品中模式化。
Ant 是程序化的,你必須明確的告訴 Ant 做什么,什么時(shí)候做。你必須告訴它去編譯,然后復(fù)制,然后壓縮。
Ant 沒有生命周期,你必須定義目標(biāo)和目標(biāo)之間的依賴。你必須手工為每個(gè)目標(biāo)附上一個(gè)任務(wù)序列。
Apache Maven
Maven 擁有約定,因?yàn)槟阕裱思s定,它已經(jīng)知道你的源代碼在哪里。它把字節(jié)碼放到 target/classes ,然后在 target 生成一個(gè) JAR文件。
Maven 是聲明式的。你需要做的只是創(chuàng)建一個(gè) pom.xml 文件然后將源代碼放到默認(rèn)的目錄。 Maven 會幫你處理其它的事情。
Maven 有一個(gè)生命周期,當(dāng)你運(yùn)行 mvn install 的時(shí)候被調(diào)用。這條命令告訴 Maven 執(zhí)行一系列的有序的步驟,直到到達(dá)你指定的生命周期。遍歷生命周期旅途中的一個(gè)影響就是, Maven 運(yùn)行了許多默認(rèn)的插件目標(biāo),這些目標(biāo)完成了像編譯和創(chuàng)建一個(gè) JAR 文件這樣的工作。
Maven 以插件的形式為一些一般的項(xiàng)目任務(wù)提供了內(nèi)置的智能。如果你想要編寫運(yùn)行單元測試,你需要做的只是編寫測試然后放到 ${basedir}/src/test/java ,添加一個(gè)對于 TestNG 或者 JUnit 的測試范圍依賴,然后運(yùn)行 mvn test 。如果你想要部署一個(gè) web 應(yīng)用而非 JAR ,你需要做的是改變你的項(xiàng)目類型為 war ,然后把你文檔根目錄置為 ${basedir}/src/main/webapp 。當(dāng)然,你可以用 Ant 做這些事情,但是你將需要從零開始寫這些指令。使用 Ant ,你首先需要確定 JUnit JAR 文件應(yīng)該放在哪里,然后你需要創(chuàng)建一個(gè)包含這個(gè) JUnit JAR 文件的 classpath ,然后告訴 Ant 它應(yīng)該從哪里去找測試源代碼,編寫一個(gè)目標(biāo)來編譯測試源代碼為字節(jié)碼,使用 JUnit 來執(zhí)行單元測試
簡單使用語句
mvn -v 查看版本
compile 編譯
test 測試
package 打包
clean 清楚target
install 安裝jar包到本地倉庫中
自動創(chuàng)建目錄骨架
archetype插件用于創(chuàng)建符合maven規(guī)定的目錄骨架創(chuàng)建目錄有兩種方式
方式一:archetype:generate 按照提示進(jìn)行選擇
方式二:archetype:generate -DgroupId=組織名,公司網(wǎng)址的反寫+項(xiàng)目名
-DartifactId=項(xiàng)目名-模塊名
-Dversion=版本號
-Dpackage=代碼所存在的包名
其他知識點(diǎn)
坐標(biāo)
構(gòu)件
倉庫 分為本地倉庫和遠(yuǎn)程倉庫
鏡像倉庫
clean 清理項(xiàng)目
pre-clean 執(zhí)行清理前的工作
clean清理上一次構(gòu)建生成的所有文件
post-clean執(zhí)行清理后的文件
site生成項(xiàng)目站點(diǎn)
pre-site 在生成項(xiàng)目站點(diǎn)前要完成的工作
site 生成項(xiàng)目的站點(diǎn)文檔
post-site在生成項(xiàng)目站點(diǎn)后要完成的工作
site-deploy發(fā)布生成的站點(diǎn)到服務(wù)器上
依賴范圍
依賴沖突
依賴傳遞
聚合和繼承,其他知識點(diǎn)以后在詳細(xì)介紹。。
感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“java中maven是什么”這篇文章對大家有幫助,同時(shí)也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,更多相關(guān)知識等著你來學(xué)習(xí)!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。