Eclipse下maven使用的常見問題及scope詳解

Eclipse下maven使用的常見問題及scope詳解

前言

在Eclipse下使用Maven,著實有些不足之處馋没,以至于經(jīng)常有人問到Maven相關(guān)的問題,故此在這里做個總結(jié)降传,以便大家查閱篷朵。有的涉及原理的東西,也一一講解搬瑰,這樣能舉一反三款票。

怎么創(chuàng)建Maven項目

eclipse支持maven項目的創(chuàng)建,如果你希望不要等待那么久泽论,直接跳過架構(gòu)選擇即可艾少,但是你需要清晰地知道Maven的項目結(jié)構(gòu),他應該是這個樣子:??Eclipse中的Maven項目對


文件夾的結(jié)構(gòu)解析是自動的翼悴,對應的關(guān)系如上圖缚够。?如果你創(chuàng)建的項目的結(jié)構(gòu)不是如此,可以手動添加對應文件夾鹦赎,Eclipse可以自動識別谍椅。注意所有文件夾的創(chuàng)建都應該在src下。當然古话,SpringBoot的web內(nèi)容是直接仿到resouces下面的雏吭,那是SpringBoot內(nèi)置的對靜態(tài)資源的處理。

如何設(shè)置JDK版本

很多人發(fā)現(xiàn)創(chuàng)建完的Eclipse的Maven項目陪踩,在Project?Facts中看到的Java的版本居然是1.5這個上古時代的版本杖们,實際上我們只需要在Maven中添加這么一段代碼就可以了:

<build>

????<plugins>

????????<plugin>

????????????<groupId>org.apache.maven.plugins</groupId>

????????????<artifactId>maven-compiler-plugin</artifactId>

????????????<configuration>

????????????????<source>1.8</source>

????????????????<target>1.8</target>

????????????</configuration>

????????</plugin>

</plugins>

</build>

項目菜單中的Update Project是什么原理

Eclipse實際上對Maven的支持并不算完備悉抵,其中一個特點就是Eclipse仍按照自己的方式來管理Maven項目,當我們修改了POM配置后摘完,Maven并不能自動讀取理解姥饰。而且Eclipse會嘗試通過POM配置自動匹配一些Eclipse內(nèi)置配置,比如嘗試為web項目自動添加webService的支持等孝治。?修改pom后列粪,單擊項目右鍵選擇Maven->Update?Project的功能就是讀取POM配置并使用Eclipse的方式來更新項目的配置。比如,上面的修改Java版本的代碼改動后,你就應該執(zhí)行這個操作:??簡單說來胶背,所有pom文件的更新,如果沒有及時反饋到Eclipse的項目屬性中掺逼,你都可以執(zhí)行這個菜單,快捷鍵為alt+?F5瓤介。

從哪里搜索依賴,如何選擇版本

原來的maven.aliyun.com是可以搜索包的赘那,但是現(xiàn)在只能作為庫使用了刑桑。搜索庫,最佳去處募舟,自然是https://mvnrepository.com/祠斧,搜索后直接復制pom就可以了。

關(guān)于版本選擇問題拱礁,一方面要考慮版本之間的沖突琢锋,這是第一原則。其次呢灶,如果有多個版本可選(比如日志框架)吴超,那么選擇下載次數(shù)最多的基本不會錯,如下圖:


什么時候需要設(shè)置scope

scope是對dependency的管理措施鸯乃,scope的可用值有下面幾個:

1鲸阻、?compile?這是默認的scope,表示在運行缨睡,打包鸟悴,測試幾個聲明周期中,對應的jar包都是存在可用的奖年,最典型的是如果你設(shè)置了某個dependency的scope不為compile细诸,則你會發(fā)現(xiàn)打包后war文件中沒有對應的jar包。

system?這個scope可以用來引用maven庫無法下載的包陋守,比如你公司自己的jar包震贵,如果沒有maven私服利赋,這是一個快捷的解決辦法,典型的例子是谷歌的驗證碼插件:

<dependency>

<groupId>com.google.code</groupId>

<artifactId>kaptcha</artifactId>

<version>2.3.2</version>

</dependency>

大家可以嘗試后發(fā)現(xiàn)提示無法直接下載屏歹,解決的辦法是https://mvnrepository.com/中搜索到對應版本后找到j(luò)ar包下載隐砸,然后放到項目的某個文件夾中,用下面的代碼實現(xiàn)引用:

<dependency>

<groupId>com.google.code</groupId>

<artifactId>kaptcha</artifactId>

<version>2.3.2</version>

<scope>system</scope>

<systemPath>${project.basedir}/libs/kaptcha-2.3.2.jar</systemPath>

</dependency>

3蝙眶、provided?provided表示將來的運行環(huán)境會提供該jar包季希,它在編輯代碼時段,maven打包階段都可用幽纷,但不會打包到結(jié)果中式塌,比如tomcat自帶的包,比如servlet-api友浸,可以這樣寫:

<dependency>

<groupId>javax</groupId>

<artifactId>javaee-api</artifactId>

<version>7.0</version>

<scope>provided</scope>

</dependency>

這樣就不用使用eclipse的方式也就是添加對tomcat運行時的build?path了峰尝。

4.

test表示引用的jar包僅在測試類中有效,比如下面的兩張圖說明了這個問題:Eclipse認識不同的作用域收恢。

當然test?scope的jar包也不會被打包到結(jié)果包中武学,比如war中。

5伦意、runtime?這個作用域用來表示該jar包僅在運行時可用火窒,及在編譯打包期間不需要,與compiler相比驮肉,僅跳過編譯步驟熏矿。

Maven的源設(shè)置及本地倉庫設(shè)置

本地倉庫,默認存放緩存位置是在C盤离钝,C盤是多么重要的地盤票编,maven依賴不小哇,動不動就是幾個G卵渴,所以還是將其轉(zhuǎn)移吧慧域,代碼參考下面的講述。?使用aliyun的maven源仍然是最快的奖恰,設(shè)置的辦法有兩種吊趾,一個是修改eclipse的maven設(shè)置中的settings.xml:

<?xml?version="1.0"?encoding="UTF-8"?><settingsxmlns="http://maven.apache.org/SETTINGS/1.0.0"

??????????xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

??????????xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0?http://maven.apache.org/xsd/settings-1.0.0.xsd">

??<localRepository>D:\mavenrepo</localRepository>

??<mirrors>??

?????<mirror>??

??????<id>alimaven</id>??

??????<mirrorOf>central</mirrorOf>??

??????<name>aliyun maven</name>??

??????<url>http://maven.aliyun.com/nexus/content/groups/public/</url>??

????</mirror>??

??</mirrors>??</settings>

一個是在pom中添加源設(shè)置(pom的根節(jié)點下):

<repositories>

<repository>

<id>public</id>

<name>aliyun nexus</name>

<url>http://maven.aliyun.com/nexus/content/groups/public/</url>

<releases>

<enabled>true</enabled>

</releases>

</repository>

</repositories>


需要和原創(chuàng)作者溝通交流技術(shù),或者說有問題需要幫助解答的話瑟啃,可以留言回復论泛,大家也可以關(guān)注我下 ?以后給大家?guī)砀嗟木蕛?nèi)容

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市蛹屿,隨后出現(xiàn)的幾起案子屁奏,更是在濱河造成了極大的恐慌,老刑警劉巖错负,帶你破解...
    沈念sama閱讀 218,036評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件坟瓢,死亡現(xiàn)場離奇詭異勇边,居然都是意外死亡,警方通過查閱死者的電腦和手機折联,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,046評論 3 395
  • 文/潘曉璐 我一進店門粒褒,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人诚镰,你說我怎么就攤上這事奕坟。” “怎么了清笨?”我有些...
    開封第一講書人閱讀 164,411評論 0 354
  • 文/不壞的土叔 我叫張陵月杉,是天一觀的道長。 經(jīng)常有香客問我抠艾,道長苛萎,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,622評論 1 293
  • 正文 為了忘掉前任检号,我火速辦了婚禮腌歉,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘齐苛。我一直安慰自己究履,他們只是感情好,可當我...
    茶點故事閱讀 67,661評論 6 392
  • 文/花漫 我一把揭開白布脸狸。 她就那樣靜靜地躺著,像睡著了一般藐俺。 火紅的嫁衣襯著肌膚如雪炊甲。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,521評論 1 304
  • 那天欲芹,我揣著相機與錄音卿啡,去河邊找鬼。 笑死菱父,一個胖子當著我的面吹牛颈娜,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播浙宜,決...
    沈念sama閱讀 40,288評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼官辽,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了粟瞬?” 一聲冷哼從身側(cè)響起同仆,我...
    開封第一講書人閱讀 39,200評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎裙品,沒想到半個月后俗批,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體俗或,經(jīng)...
    沈念sama閱讀 45,644評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,837評論 3 336
  • 正文 我和宋清朗相戀三年岁忘,在試婚紗的時候發(fā)現(xiàn)自己被綠了辛慰。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,953評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡干像,死狀恐怖帅腌,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情蝠筑,我是刑警寧澤狞膘,帶...
    沈念sama閱讀 35,673評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站什乙,受9級特大地震影響挽封,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜臣镣,卻給世界環(huán)境...
    茶點故事閱讀 41,281評論 3 329
  • 文/蒙蒙 一辅愿、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧忆某,春花似錦点待、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,889評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至聋呢,卻和暖如春苗踪,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背削锰。 一陣腳步聲響...
    開封第一講書人閱讀 33,011評論 1 269
  • 我被黑心中介騙來泰國打工通铲, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人器贩。 一個月前我還...
    沈念sama閱讀 48,119評論 3 370
  • 正文 我出身青樓颅夺,卻偏偏與公主長得像,于是被迫代替她去往敵國和親蛹稍。 傳聞我的和親對象是個殘疾皇子吧黄,可洞房花燭夜當晚...
    茶點故事閱讀 44,901評論 2 355

推薦閱讀更多精彩內(nèi)容

  • Maven使用入門 1. Maven概述 Maven是什么?Maven項目對象模型(POM)稳摄,可以通過一小段描述信...
    小小韓_小小紅閱讀 2,522評論 2 28
  • Maven的基本了解 什么是Maven稚字? Maven就是Apache下的一個開源項目。它是用純java開發(fā)的。是一...
    Bcome閱讀 2,820評論 0 7
  • Maven編譯代碼的相關(guān)命令 第一胆描、main目錄下的主代碼編寫完畢后瘫想,使用Maven進行編譯,在項目根目錄下運行命...
    加油小杜閱讀 1,190評論 0 2
  • 一年365天 一天被三餐劃分 我到底是活了365天车吹? 還是活了一天 重復了三百六十五次? 大學總是給我一種時間很多...
    薇嶼獨白閱讀 768評論 1 1
  • (一)被迫幫忙 北方的春季醋闭,白天比較短窄驹。 放學后趕緊寫作業(yè),待收拾起本子后证逻,天已經(jīng)朦朦朧朧乐埠。爸爸開著家里的農(nóng)用車拉...
    娜娜可妮醬閱讀 328評論 2 1