這篇文章將為大家詳細(xì)講解有關(guān)Maven的示例分析,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
創(chuàng)新互聯(lián)公司網(wǎng)站建設(shè)服務(wù)商,為中小企業(yè)提供成都做網(wǎng)站、網(wǎng)站設(shè)計服務(wù),網(wǎng)站設(shè)計,綿陽服務(wù)器托管等一站式綜合服務(wù)型公司,專業(yè)打造企業(yè)形象網(wǎng)站,讓您在眾多競爭對手中脫穎而出創(chuàng)新互聯(lián)公司。也許是本人不才,初識Maven時,被各種不明所以的教程搞得一頭霧水,而在后來的使用中,我發(fā)現(xiàn)Maven大部分功能沒有想象的那么困難。
本片文章面向Maven初學(xué)者,希望能讓其以最快的速度了解Maven并享受到它所帶來的一系列好處。
[一個簡單的問題]
在進(jìn)行講解前,先提問一個簡單的問題。
假如你正在Eclipse下開發(fā)兩個Java項目,姑且把它們稱為A、B,其中A項目中的一些功能依賴于B項目中的某些類,那么如何維系這種依賴關(guān)系的呢?
筆者在使用Maven前是這樣做的,將B項目打包為jar,并在A項目的Library下導(dǎo)入B的jar文件。
這樣做有著很明顯的缺點:
1.如果在開發(fā)過程中,發(fā)現(xiàn)B中的bug,則必須重新將B打包并對A項目進(jìn)行重編譯操作
2.在協(xié)同開發(fā)A項目時,為了保證其能夠正常運行,要么選擇將B打包入A中,要么選擇將B一樣發(fā)布出去并告知開發(fā)者使用方法。顯然這兩個方法都不太好,前者可能造成資源浪費(比如開發(fā)者可能正在開發(fā)依賴B的其它項目,B已經(jīng)存儲到本地了),而后者則會為項目正常運行帶來風(fēng)險(一旦把工作交給人工注定會帶來一定的失敗率)。
因此,這樣手動的控制項目間依賴關(guān)系顯然是一種‘拙劣'的方法。
[Maven介紹]
依據(jù)筆者看來,Maven的核心功能便是合理敘述項目間的依賴關(guān)系。
所有的Maven項目包含著一個名為pom.xml的文件,在文件中記錄著自己的<groupId><artifactId><version>等字段,這些字段在創(chuàng)建Maven項目時填寫,Maven會依據(jù)它們來定位到該項目。
在pom中的另一個關(guān)鍵標(biāo)簽是<dependencies>,該標(biāo)簽下可以包含若干個<dependency>標(biāo)簽,而<dependency>下則是上面介紹的<groupId><artifactId><version>等依賴字段,它們確定著一個唯一的項目版本。
一個典型的pom.xml[來自項目luajava]:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.keplerproject</groupId> <artifactId>luajava</artifactId> <version>1.1</version> <packaging>jar</packaging> <name>luajava</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>2.0.2</version> <configuration> <source>1.7</source> <target>1.7</target> </configuration> </plugin> </plugins> </build> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> </dependencies> </project>
[Maven庫]
以剛才的A、B項目為例,在A項目的pom文件中寫入<dependency>關(guān)聯(lián)B項目,Maven會在工作區(qū)中找到B項目,并創(chuàng)建依賴。此時A項目可以直接訪問到B項目中的類資源,而且對A調(diào)試時依然會擊中B項目中設(shè)置的斷點。
除去工作區(qū)的依賴關(guān)聯(lián)外,Maven也可以關(guān)聯(lián)一個遠(yuǎn)端鏡像中的項目,在默認(rèn)情況下,如果工作區(qū)中沒有對應(yīng)的項目記錄,Maven會連接到中心倉庫查找,如果找到,它會把項目下載到本地庫中(Windows中本地庫位于用戶文檔的.m2目錄下),并自動設(shè)置關(guān)聯(lián)。這是一個十分便利的特性,在我們需要額外jar包支持時,不再需要進(jìn)行手動的下載和引入,我們僅需要將需要項目對應(yīng)的依賴字段粘貼到pom的合適位置,剩下的交給Maven完成即可。
[一個例子]
那么,我們?nèi)绾沃浪桧椖康膅roupId等字段呢?
一般而言,如果官方項目支持Maven,在其頁面一般會有一段依賴字段以供復(fù)制,但也確實存在支持Maven但沒有給出依賴字段的情況。而另一些項目的Maven特性由第三方維護(hù),此時從官方渠道獲得對Maven的支持比較困難。
因此,查詢依賴字段選的方案,是使用Maven搜索服務(wù)進(jìn)行搜索。
這里筆者推薦一個地址:mvnrepository.com
下面以使用Eclipse關(guān)聯(lián)MySqlJDBC驅(qū)動為例子,在此之前,請在Help->AboutEclipse中確認(rèn)其支持Maven:
在Eclipse官方新版本中,已經(jīng)內(nèi)置有對Maven的支持,如果版本比較舊可以去安裝Maven插件。
我們先來新建一個Maven項目,New->Project->MavenProject->Createasimpleproject(skiparchetypeselection).
下面是這步比較重要,填寫這個項目的GroupId等依賴字段,這里填寫的字段會在其它項目對其依賴時用到,未填寫的部分都為選填內(nèi)容:
之后,我們?nèi)vnrepository.com搜索"MySql JDBC"
很快,我們找到了結(jié)果,點擊進(jìn)入查看詳細(xì)的版本信息:
這里列出了MySql JDBC的多個版本及使用情況,這里我們選擇一個第二新的版本5.1.34:
復(fù)制Maven框中的內(nèi)容,把它們寫到pom的<dependencies>下:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.test</groupId> <artifactId>maventest</artifactId> <version>0.0.1-SNAPSHOT</version> <dependencies> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.34</version> </dependency> </dependencies> </project>
在Progress讀條結(jié)束后,可以看到項目中多出Maven Dependencies,里面可以找到我們剛剛引入的jdbc驅(qū)動包:
[其它特性]
1.鏡像源
很明顯,Maven中心倉庫負(fù)載比較大,而且不在國內(nèi),因此速度非常慢,有時甚至?xí)也坏揭蕾?。因此,尤其是在小?guī)模團(tuán)隊開發(fā)這種場合下,搭建一個Maven游戲會極大的提升效率。這里推薦一個Maven鏡像搭建工具:Nexus:http://www.sonatype.org/nexus/
使用它可以很快速方便的搭建私有Maven鏡像源,之后在Maven的settings.xml里進(jìn)行配置即可。
2.惰性下載src源碼
在一些時候,我們需要參閱依賴項目的源文件,此時可以嘗試直接雙擊class文件,如果Maven鏡像源中存在源文件,會自動下載到本地,eclipse會自動加載并顯示。
3.編譯參數(shù)配置
筆者使用EclipseLuna版,Maven默認(rèn)的Java編譯版本為1.5,我們可以在pom指定其編譯版本,使其提升至1.7(參考luajavapom中的build標(biāo)簽);此外這些設(shè)置也會被諸如jenkins持續(xù)集成等自動化工具讀取并進(jìn)行恰當(dāng)配置。
關(guān)于“Maven的示例分析”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學(xué)到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
網(wǎng)站名稱:Maven的示例分析-創(chuàng)新互聯(lián)
鏈接URL:http://jinyejixie.com/article8/iscop.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供動態(tài)網(wǎng)站、面包屑導(dǎo)航、定制開發(fā)、定制網(wǎng)站、外貿(mào)建站、網(wǎng)站改版
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容