jenkins和maven的區(qū)別

jenkins和maven的區(qū)別

parent pom 文件中 定義 <version>1.2.0-SNAPSHOT</version> <properties> <usecase.version>1.2.0</usecase.version> <revision>SNAPSHOT</revision> </properties> 在各個module 的pom 文件中 我們 <version>${usecase.version}-${revision}</version> <parent> <version>1.2.0-SNAPSHOT</version></parent> 這里其實利用的Maven的child module 可以使用parent pom 中的properties。雖然maven 會給出一個warning說 <version>${usecase.version}-${revision}</version> **使用static 量。

我們可以在maven build 的時候通過 -Drevision 來指定svn 的版本號。

這樣build 出來的 jar 文件就會形如 myapp-1.2.0-13645.jar 13645 就是 svn的版本號。 我們在Jenkins 中可以利用它的內建系統(tǒng)變量SVN_REVISION來獲取revision 比如 -Drevision=${SVN_REVISION}, 這樣build 出來的 jar 或者 war 都是 帶svn 版本號而不是SNAPSHOT。 當然如果我們不傳入這個revision系統(tǒng)變量,build 出來的就是默認的SNAPSHOT。 在Jenkins 中, 我們就不需要deploy 到 nexus 中了, 我們現(xiàn)在的做法是所有build 出來的war 都是通過 scp 插件拷貝到另外一臺有比較大空間的server 來備份所有build 出來的war。

這樣在后來的發(fā)布的job 都需要通過image name 參數(shù)指定 war包的文件名。 deploy job 會在這個備份的目錄中找到需要deploy的war 文件將它拷貝到相應的tomcat 目錄下。 這樣做的另外一個好處是 以前有N多的deploy job 現(xiàn)在就簡化成一個。

我們只需要一個帶3個參數(shù)的job: image name 指定 war 文件名 app 這個可以通過選擇來指定我們的六個應用之一。 env 來指定deploy 的環(huán)境之一 : DEV, SIT 或者 PREPROD。要知道以前我們的deploy 需要悲催的 幾十個job, 在Jenkins 的job 列表中需要密密麻麻的 一坨。

xammp/phpfind/maven/tomcat/jenkins這些名詞都是什么意思,互相之間有什么關系?

xammp=Apache+MySQL+PHP+PERL是一個功能強大的建站集成軟件包。這個軟件包原來的名字是 LAMPP,但是為了避免誤解,**的幾個版本就改名為 XAMPP 了。

phpfind是7件套,集成**Nginx+PHP+MySQL+SQL-Front+Zend Guard Loader+XCache。

支持系統(tǒng)服務和非服務兩種啟動方式,自由切換。

jee jvm那個比較好,他們之間的區(qū)別和聯(lián)系是什么?

1)jvm有很多種,其實jvm是一個標準,sun做的那個叫hotspot,作者就是后來v8的作者lars bak,其他公司也做過jvm,其中做得比較好的有bea的jrockit,其他的包括ibm的r9,apple的jvm等在內,都做得不行,所以jvm主要是整合淘汰掉這些做得不好的jvm(s),整合成一個統(tǒng)一的openjdk。
2)java是典型的oop語言,其執(zhí)行效率的優(yōu)化,最早就是lars bak等人從**alltalk等長期優(yōu)化的經驗中總結出來并apply到hotspot上去滴,而**alltalk在早期apple機上搞出了那種拖拖拽拽就開發(fā)出app的做法,后來vc,delphi之類的其實都是抄襲或者說借鑒apple的**alltalk的做法,jobs說微軟從頭到尾都在抄襲apple是空穴來風,這里空穴來風跟王垠使用的空穴來風是一個意思,有趣的是,java的gui并沒有繼承這種搞法,反而對這種拖拖拽拽就作出app的做法批判有加,到今天,其實java的gui都還不能真正做到拖拖拽拽就作出來,問題很多,個人建議對于純java的gui開發(fā),還是以寫代碼為主。

3)jee也是一個或者說是一堆標準,知乎上有些人把maven,jenkins都算做jee是不對滴,jee的標準核心是ejb,其實就是一個xml配置化的java文件,這個標準在4的時候,達到了頂峰狀態(tài),幾乎所有的挨踢大廠都主動支持該標準,之后開始走下坡路,支持的廠越來越少。

4)java和javascript的關系比很多人認為的要密切,javascript里面的java這四個字母可不是白叫的,比如js的版權和商標都控制在oracle手里,oracle對于js的支持甚至超過其對java的支持,并且喜歡捆綁銷售,比如jvm里面就有一個js引擎。
5)jvm里面除了js engine以外還有一個瀏覽器排版引擎webkit,就是apple safari和google chrome用的那個那個。
6)java支持絕大多數(shù)腳本語言,你能叫得上名字的腳本語言,幾乎都可以在jvm上執(zhí)行,比如常見的js,ruby,python,甚至php,lua,只不過除了js以外你需要找到相關的腳本引擎。
7)spring的版權被控制在vmware手里,其實spring的那一大堆東西,本質上是一個非標準的jee實現(xiàn),比如在jee里面用的inject,在spring里面就是autowire,當然spring曾經深刻滴影響了jee,所以有些東西比如di標準,是spring影響下制定出來的,所以spring的做**比較特例一點。

8)maven上的jars數(shù)量前兩天突破800萬,其他語言的類庫,排名第二的是npm,大概數(shù)量是maven的十分之一,也就是幾十萬,不知道現(xiàn)在突破100萬沒有,然后是gem,也就是ruby那個,大概是十幾萬,下來是python的module,大概數(shù)量級是幾萬,沒突破十萬。
9)java的標準是由一個叫做jcp的組織制定的,所有標準需要經過jcp的執(zhí)行委員會通過方可執(zhí)行,jcp幾乎包括了你所知道的絕大多數(shù)知名挨踢公司和組織,比如google,apple,ibm,intel,arm,red hat,twitter等,還有一些教育機構,比如我國的北京大學,阿里最近一次申請jcp執(zhí)行委員會成員資格,似乎投票不通過,最近一次執(zhí)行委員會新增兩個成員是arm和jetbrains。
10)微軟也曾經是jcp甚至是java的主要貢獻者,但是利益驅使下,想擴展java,從而破壞java跨平臺的特性,所以跟sun鬧翻,其本質原因就是想讓客戶寫的java代碼跟windows綁定,sun堅決不同意,鬧翻,今天回頭看這個結果,只能說:雙輸,sun掛了,微軟的ria也離掛不太遠了,silverlight已經放棄了,比起當年ie自帶有jvm的支持來說,那完全就是兩回事。

11)除了微軟以外,jcp還缺少一個重要組織apache,因為apache跟oracle也鬧翻了,oracle似乎并不在乎開源組織,而更在意商業(yè)公司的支持。
12)java曾經有一個內置的數(shù)據(jù)庫,9之后被剝離。
13)j2me是j2se的子集。

14百科)vert.x作者tim fox最早在vmware做spring時候看到了node.js,萌生出了制作支持多核的node.x的想法,并在離開vmware后加入red hat將其實現(xiàn),vmware看到后開始耍無賴,claim node.x后來改叫vert.x的版權,不惜跟red hat打官司,后來各方妥協(xié),將其交給eclipse foundation。
15)oracle在收購bea之前,一開始的目標并不是bea和bea的weblogic,而是jboss,但是jboss表現(xiàn)出了極為有種的一面,在oracle收購成功之前,投入了red hat的懷抱,因為都是開源組織,從此jboss成了red hat的一個子部門,oracle收購jboss失敗之后,轉向bea,莊思浩氣*了,但是沒用,**還是被惡意收購。
16)sun在玩不下去之前最早嘗試接觸的目標是ibm,ibm嫌太貴,放棄之后,被轉手給了oracle。

(Java學習交流QQ群:589809992 我們一起學Java?。?br/> 17)vert.x的作者tim fox在離開red hat之前曾經發(fā)過twitter抱怨,外人比如我們,猜測是因為red hat內部已經有了一個jboss,所以跟vert.x在應用上有了重疊,所以導致tim fox的出走,但是出走之后,red hat答應對vert.x做持續(xù)性的戰(zhàn)略投入,所以vert.x core的幾個developers,其實拿的是red hat的工資,但是vert.x的版權并不在red hat手里,而在eclipse foundation手里。
18)vert.x的幾個核心開發(fā)人員都是google summer of code的導師,每年年初時候會招收在校大學生搞項目。
19)教育機構相關:scala的作者馬丁是德國人,eth的博導,groovy的主要**人是法國人,jruby背后是東京大學,jboss的作者是法國大學校x的校友,x就是伽羅瓦考不進去的那所大學,伽羅瓦進不了x,所以改讀巴黎高師,tim fox畢業(yè)于帝國理工,主席去的那個,netty作者trustin lee是acm銀牌,現(xiàn)在line工作,畢業(yè)于sky里面的延世大學,kotlin是毛子公司jetbrains的作品,看linkedin,很多人畢業(yè)自圣彼得堡大學,spring作者rod johnson是悉尼大學的音樂博士,hibernate作者gavin king是澳洲莫那什大學的數(shù)學本科畢業(yè)生,james gosling這種cmu和calgory的估計爛大街了,sun是斯坦福大學**的意思,夾帶兩個私貨,aspectj有一個維護小組在mcgill,hbase跟waterloo關系密切。
20)java早期被人認為慢,跟java堅持不用硬件加速渲染有關,*活就是不肯接入directx和opengl,7之后總算開竅,搞了一個圖形引擎接入了directx/opengl。

21)casssandra是facebook做失敗的項目,被貢獻給了apache之后老樹開花。
22)groovy被貢獻給了apache,現(xiàn)在叫做apache groovy,ceylon被貢獻給了eclipse,現(xiàn)在叫做eclipse ceylon。
23)netflix現(xiàn)在是java shop,之前是用.net的。
先想到這么多,有空再寫。

什么是Jenkins?

Jenkins是一個開源軟件項目,是基于Java開發(fā)的一種持續(xù)集成工具,用于監(jiān)控持續(xù)重復的工作,旨在提供一個開放易用的軟件平臺,使軟件的持續(xù)集成變成可能。黑馬程序員的軟件測試課程里詳細的講解了持續(xù)集成的相關技術。