国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > Java > 正文

快速了解Maven

2024-07-13 10:15:07
字體:
來源:轉載
供稿:網友

也許是本人不才,初識Maven時,被各種不明所以的教程搞得一頭霧水,而在后來的使用中,我發現Maven大部分功能沒有想象的那么困難。

本片文章面向Maven初學者,希望能讓其以最快的速度了解Maven并享受到它所帶來的一系列好處。

[一個簡單的問題]

在進行講解前,先提問一個簡單的問題。

假如你正在Eclipse下開發兩個Java項目,姑且把它們稱為A、B,其中A項目中的一些功能依賴于B項目中的某些類,那么如何維系這種依賴關系的呢?

筆者在使用Maven前是這樣做的,將B項目打包為jar,并在A項目的Library下導入B的jar文件。

這樣做有著很明顯的缺點:

1.如果在開發過程中,發現B中的bug,則必須重新將B打包并對A項目進行重編譯操作

2.在協同開發A項目時,為了保證其能夠正常運行,要么選擇將B打包入A中,要么選擇將B一樣發布出去并告知開發者使用方法。顯然這兩個方法都不太好,前者可能造成資源浪費(比如開發者可能正在開發依賴B的其它項目,B已經存儲到本地了),而后者則會為項目正常運行帶來風險(一旦把工作交給人工注定會帶來一定的失敗率)。

因此,這樣手動的控制項目間依賴關系顯然是一種‘拙劣'的方法。

[Maven介紹]

依據筆者看來,Maven的核心功能便是合理敘述項目間的依賴關系。

所有的Maven項目包含著一個名為pom.xml的文件,在文件中記錄著自己的<groupId><artifactId><version>等字段,這些字段在創建Maven項目時填寫,Maven會依據它們來定位到該項目。

在pom中的另一個關鍵標簽是<dependencies>,該標簽下可以包含若干個<dependency>標簽,而<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>關聯B項目,Maven會在工作區中找到B項目,并創建依賴。此時A項目可以直接訪問到B項目中的類資源,而且對A調試時依然會擊中B項目中設置的斷點。

除去工作區的依賴關聯外,Maven也可以關聯一個遠端鏡像中的項目,在默認情況下,如果工作區中沒有對應的項目記錄,Maven會連接到中心倉庫查找,如果找到,它會把項目下載到本地庫中(Windows中本地庫位于用戶文檔的.m2目錄下),并自動設置關聯。這是一個十分便利的特性,在我們需要額外jar包支持時,不再需要進行手動的下載和引入,我們僅需要將需要項目對應的依賴字段粘貼到pom的合適位置,剩下的交給Maven完成即可。

[一個例子]

那么,我們如何知道所需項目的groupId等字段呢?

一般而言,如果官方項目支持Maven,在其頁面一般會有一段依賴字段以供復制,但也確實存在支持Maven但沒有給出依賴字段的情況。而另一些項目的Maven特性由第三方維護,此時從官方渠道獲得對Maven的支持比較困難。

因此,查詢依賴字段首選的方案,是使用Maven搜索服務進行搜索。

這里筆者推薦一個地址:mvnrepository.com

下面以使用Eclipse關聯MySqlJDBC驅動為例子,在此之前,請在Help->AboutEclipse中確認其支持Maven:

maven,入門

在Eclipse官方新版本中,已經內置有對Maven的支持,如果版本比較舊可以去安裝Maven插件。

我們先來新建一個Maven項目,New->Project->MavenProject->Createasimpleproject(skiparchetypeselection).

下面是這步比較重要,填寫這個項目的GroupId等依賴字段,這里填寫的字段會在其它項目對其依賴時用到,未填寫的部分都為選填內容:

maven,入門

之后,我們去mvnrepository.com搜索"MySql JDBC"

maven,入門

很快,我們找到了結果,點擊進入查看詳細的版本信息:

maven,入門

這里列出了MySql JDBC的多個版本及使用情況,這里我們選擇一個第二新的版本5.1.34:

maven,入門

復制Maven框中的內容,把它們寫到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讀條結束后,可以看到項目中多出Maven Dependencies,里面可以找到我們剛剛引入的jdbc驅動包:

maven,入門

[其它特性]

1.鏡像源

很明顯,Maven中心倉庫負載比較大,而且不在國內,因此速度非常慢,有時甚至會找不到依賴。因此,尤其是在小規模團隊開發這種場合下,搭建一個Maven私服會極大的提升效率。這里推薦一個Maven鏡像搭建工具:Nexus:http://www.sonatype.org/nexus/

使用它可以很快速方便的搭建私有Maven鏡像源,之后在Maven的settings.xml里進行配置即可。

2.惰性下載src源碼

在一些時候,我們需要參閱依賴項目的源文件,此時可以嘗試直接雙擊class文件,如果Maven鏡像源中存在源文件,會自動下載到本地,eclipse會自動加載并顯示。

3.編譯參數配置

筆者使用EclipseLuna版,Maven默認的Java編譯版本為1.5,我們可以在pom指定其編譯版本,使其提升至1.7(參考luajavapom中的build標簽);此外這些設置也會被諸如jenkins持續集成等自動化工具讀取并進行恰當配置。

總結

以上就是本文關于快速了解Maven的全部內容,希望對大家有所幫助。感興趣的朋友可以繼續參閱本站其他相關專題。如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 哈尔滨市| 富宁县| 平谷区| 马尔康县| 抚远县| 三门县| 灵璧县| 惠来县| 阿拉善盟| 太康县| 丹阳市| 松江区| 巧家县| 澎湖县| 富平县| 夏邑县| 大竹县| 邹平县| 汤原县| 义马市| 喀喇| 灵川县| 克山县| 安顺市| 阿鲁科尔沁旗| 海宁市| 襄城县| 永兴县| 东乡县| 三门峡市| 翁牛特旗| 洛扎县| 永丰县| 永修县| 青川县| 南昌市| 长沙市| 武定县| 九江市| 无锡市| 司法|