{eval=Array;=+count(Array);}
maven是一個JAVA項目管理工具,而Jenkins是一個基于Java開發(fā)的持續(xù)集成工具。接下來,我們分別來介紹它們到底是什么。
作為Java開發(fā)工程師,我是非常喜歡maven的。我自己有時候需要自己寫小的程序來處理些繁瑣數(shù)據(jù)的時候,也是喜歡用maven的。首先,在目前的eclipse和intelliJ IDE中,創(chuàng)建MAVEN工程的代價非常小,在new project的時候就可以直接選擇maven project而不是傳統(tǒng)的java project。
創(chuàng)建了project之后,需要配置pom文件。如果你已經(jīng)有過maven項目,只需要把原來的pom文件的內(nèi)容復制過來即可,需要修改的部分是artifact,groupId這類用于把當前maven工程區(qū)別去過去的maven工程的參數(shù)。
還有就是為了干凈整潔,可以把無用的dependency都刪除。說到dependency,這真是我最喜歡的maven能力之一了。我們過去用普通的java project,如果需要引入第三方jar包,通常需要你自己去網(wǎng)上找到這個jar包下載到本地,再在build path(eclipse)或project structure(IntelliJ)里手動為當前project添加對這個jar包的依賴,才能import這個jar包,使用它的功能。然而有了pom文件,你需要在百度上輸入“{jar包名稱} dependency”就能在網(wǎng)上找到對應的代碼。如下,只需要把這段代碼放到pom文件的dependencies標簽下,mavan自己就會去幫你下載這個jar包,隨后直接在工程里使用這個jar包的功能就可以了,極大的節(jié)約了時間和精力。
Jenkins并不是一個在開發(fā)過程中使用工具,而是監(jiān)控持續(xù)重復的工作,使軟件的持續(xù)集成成為可能。我分享下我們項目組使用的Jenkins方式。
我們寫完代碼后,上傳到統(tǒng)一的代碼庫,然后由Jenkins去觸發(fā)一個job,就會對制定代碼庫的代碼就行打包,打成一個war包放在指定地點,之后觸發(fā)第二個job,會根據(jù)Jenkins里的不同配置,把war包拉到指定的Linux機器上,最后再開始部署以及Nginx的熱切換。Jenkins可以理解為一個可手動觸發(fā),也可定時觸發(fā)的任務,主要應用場景是實行代碼更新后的持續(xù)集成,保證代碼庫里的代碼的穩(wěn)定性。
但是我們現(xiàn)在正在主張去Jenkins化,使用我們自己開發(fā)的一些敏捷開發(fā)工具來代替Jenkins的工作。
maven和Jenkins能做的事遠不止上面提到的這些,比如maven還能夠連接不同倉,打包等等,今天就簡單介紹到這里,歡迎大家在下方評論區(qū)與我溝通討論。
我是蘇蘇思量,來自BAT的Java開發(fā)工程師,每日分享科技類見聞,歡迎關注我,與我共同進步。
還是按照我的理解給大家解釋一下什么是Maven,什么是Jenkins。
如果有理解不對的地方,請大家留言指正。
Apache Maven is a software project management and comprehension tool.
比較官方的定義:Maven是一個項目管理工具,也有說構建工具的。
很多人都說Maven是管理jar包的,這個只是他眾多功能中的一個,Maven的作用貫穿于項目的整個生命周期。
啥叫項目周期...項目開發(fā)、編譯、測試、打包、集成測試、部署,這些就是項目的生命周期,所以Maven可以協(xié)助開發(fā)、編譯、測試、打包、集成測試、部署,它都可以做?。ㄆ鋵嵳嬲龅牟皇荕aven,它只是找了幫手去做這些事情,下面會講到)
我們經(jīng)常使用的管理jar包的功能:有一個中央倉庫,存了好多好多jar包,每個jar包不同的版本都存了。你想用什么jar包,只需要在Maven的配置文件中(pom.xml)配置一下,寫好用什么jar包,什么版本即可,Maven會自動幫你下載jar包;你依賴的jar包如果還依賴其他jar包的話,它也可以幫你下載下來。(這也是簡單的介紹下功能,實際上比這個要復雜很多)
Maven還是一個依賴插件()執(zhí)行的框架,Maven不做實際的工作,每個任務實際上是由插件完成。
介紹一下我們經(jīng)常用的幾個插件:
protobuf-java-format:谷歌出品,做代碼format的工具,項目構建的時候,工具自動回幫助你把代碼進行格式化,比如代碼的縮進是幾個空格。
maven-resources-plugin:Maven將Java代碼文件和資源文件區(qū)分開,maven-resources-plugin就是用來處理資源文件。資源文件中的屬性可以使用占位符${propertyName},而這個屬性可能在開發(fā)環(huán)境、測試環(huán)境、生產(chǎn)環(huán)境上不同,這種場景可以使用Maven的profile來支持,每個profile都可以獨立維護一套參數(shù)值,在mvn package的時候靈活指定。
wagon-maven-plugin:用于一鍵部署,把本地打包的jar文件,上傳到遠程服務器上,并執(zhí)行服務器上的shell命令。
插件非常多,就不一一介紹了。
可以看出來,mvn就是一個集成商,提供了很多插口,你想要什么功能,比如你想做集成測試,那么你就告訴mvn你要做集成測試(pom.xml文件中配置),mvn就幫你把集成測試的組件插到插孔里面了,然后你執(zhí)行一個mvn xxx的命令,系統(tǒng)就可以跑集成測試了。
官方說法:Jenkins是持續(xù)構建的可視化web工具。
直白點兒說:項目的自動化編譯、打包、部署,我提交了代碼之后(svn/git),Jenkins會自動的把代碼拿下來,編譯好,編譯之前可能要跑測試,測試通過之后項目直接打包,然后部署到服務器上面。
可以看出來,很多事情Jenkins也不自己做,也是和Maven做集成(也可以和ant、gradle集成),跑測試、編譯、打包這些也都是Maven在做的。
希望我的回答可以幫助到你!
我叫souvc,在互聯(lián)網(wǎng)公司做技術研發(fā),現(xiàn)在的公司就是通過Maven來管理Java項目的Jar包,通過Jenkins來構建Java項目以及發(fā)布到測試,正式環(huán)境。所以我來回答一下這個題目。希望能幫到大家!
Maven是Apache 開源的一個軟件。
Apache Maven是一個軟件項目管理和理解工具?;陧椖繉ο竽P?POM)的概念,Maven可以管理一個項目的構建、報告和文檔,從一個中心的信息。
Apache Maven 是一個管理Java項目Jar包依賴的一個工具,有了它就不用一個個的Jar放到Java項目中,同時還能通過Maven去構建Java項目,使得編譯一個Java項目更加的簡單,方便。
Maven提高了程序員的生產(chǎn)效率。
Maven的使用,使得源代碼中不用帶Jar包,使得源代碼之間的轉移更加方便。因為它可以引用本地的Jar包。
Jenkins是一個開源軟件項目,是基于Java開發(fā)的一種持續(xù)集成工具,用于監(jiān)控持續(xù)重復的工作,旨在提供一個開放易用的軟件平臺,使軟件的持續(xù)集成變成可能。
Jenkins就是一個輔助發(fā)布,構建Java項目的工具,原來通過寫Linux腳本來執(zhí)行的事情,交給Jenkins來做,釋放程序員的雙手,不用經(jīng)常的手動執(zhí)行腳本。通過Jenkins來達到自動化部署,自動化運營的目的。
通俗一點說
倆者的區(qū)別
Maven是管理Jar的工具,是方便程序員管理Jar包的。而Jenkins是自動化構建工具,是提高程序員發(fā)布Java應用的效率的。它們專注點不一樣。
倆者的共同點
Maven也可以發(fā)布應用,Jenkins也可以依賴Maven進行構建項目。
當然還有很多其他的功能,在這里就不一一列出來了。如有其他不明,可以在評論區(qū)留言,詳細為大家解答!
我是souvc,請關注我,給大家分享相關的互聯(lián)網(wǎng)技術。
我們知道,任何一款軟件都是先由程序員在本地環(huán)境中開發(fā),然后再部署到線上環(huán)境的。傳統(tǒng)的部署方式是手工復制文件、進行參數(shù)配置、再來部署的,假設一個項目需要頻繁發(fā)布這種手動方式就顯得很慢了,于是也就有了自動化發(fā)布系統(tǒng)。
中型以上項目會涉及到自動化構建及發(fā)布,而這一切離不開Maven和Jenkins,那什么是Maven和Jenkins呢?兩者又有什么區(qū)別呢?
Java開發(fā)者肯定接觸過Maven,在Maven出現(xiàn)之前如果我們要導入jar包,都是復制jar包文件到指定目錄來實現(xiàn)導入的,但是這種方式就存在jar包依懶和沖突的問題:
可能重復引用了相同的jar包;
團隊開發(fā)中不同開發(fā)者引用的jar包不同,存在沖突等。
Maven的出現(xiàn)就完美的解決了這些尷尬,它會自動幫我們管理jar包,如果某個jar包有其它依懶,Maven也會幫你把這些依懶包下載導入進來,十分方便。
Jenkins是一款基于Java開發(fā)的持續(xù)集成工具,可以自動化構建及測試軟件項目。
如何理解呢?大致是這樣的流程:
我們寫完代碼后將代碼上傳到Git倉庫(或SVN)中 => 然后由Jenkins來觸發(fā)一個Job任務 => Jenkins就會自動將項目打包 => 然后發(fā)布到指定服務器上(將Git中的項目同步至服務器上)=> 進行指定的操作(如重啟服務)。
看下去Maven和Jenkins都是用來構建項目的,但是這兩者是有很大區(qū)別的。
Maven偏項目開發(fā)管理,主要是解決項目依懶問題;
Jenkins偏運維管理,讓運維從繁瑣的發(fā)布工作中解脫出來。
Maven一般用于構建工程(設置項目的classpath,用于加載第三方Jar包等),也可以借助第三方插件,實現(xiàn)發(fā)布等功能!
Jenkins是持續(xù)集成工具,一般用于發(fā)布和管理最終產(chǎn)品,在集成了版本控制插件后,可以實現(xiàn)自動部署和發(fā)布。
兩者的側重點不同,但可以相輔相承,Jenkins中的Maven插件,可以讓你的部署自動化……
0
回答0
回答0
回答0
回答0
回答0
回答9
回答0
回答9
回答0
回答