今後告別maven構建羨慕慢的噩夢!!!

Apache Maven是當今很是流行的項目構建和管理工具,它把開發人員從繁雜的項目依賴關係處理事務中解放出來,徹底自動化管理依賴問題。在Web應用開發過程當中,一般咱們會用到maven的archetype插件來生成項目框架,例如:
mvn archetype:generate -DgroupId=com.yourhost.app -DartifactId=your-app -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
但一般這個過程是虐心的。 
現象:
用maven構建項目骨架時,速度很是慢,不管是在命令行中直接使用,仍是在IDE中使用。若是再加上網絡很差,那就更難熬了,喝完三杯咖啡都不見得能看到構建結果。以個人經驗,不少時候都要30分鐘左右............
緣由:
要了解其中的緣由,須要知道maven是如何運做的。構建過程當中,咱們只是向maven提供了一些groupId、artifactId、archetypeArtifactId等信息,只有這些信息的狀況下maven是如何構建出整個項目的呢?它的知識來源於哪裏呢?答案是:

http://repo.maven.org/maven2/archetype-catalog.xml這裏記錄了,全部archetype構建信息,maven經過archetype插件構建項目骨架時會遠程訪問頁面,經過maven的-X參數能夠證實這一點。html

[DEBUG] -- end configuration --
[INFO] Generating project in Batch mode
[DEBUG] Searching for remote catalog: http://repo.maven.apache.org/maven2/archetype-catalog.xml (一般就卡在這一步長達25+分鐘)
直接在瀏覽器打開這個連接的速度同樣很是慢。打開後經過瀏覽器的查看源碼功能,以下所示:
<?xml version="1.0" encoding="UTF-8"?>
<archetype-catalog>
  <archetypes>
    <archetype>
      <groupId>am.ik.archetype</groupId>
      <artifactId>maven-reactjs-blank-archetype</artifactId>
      <version>1.0.0</version>
      <description>Blank Project for React.js</description>
    </archetype>
    <archetype>
      <groupId>am.ik.archetype</groupId>
      <artifactId>msgpack-rpc-jersey-blank-archetype</artifactId>
      <version>1.0.7</version>
      <description>Blank Project for Spring Boot + Jersey</description>
    </archetype>
    <archetype>
      <groupId>am.ik.archetype</groupId>
      <artifactId>msgpack-rpc-jersey-blank-archetype</artifactId>
      <version>1.0.6</version>
      <description>Blank Project for Spring Boot + Jersey</description>
    </archetype>
    <archetype>
      <groupId>am.ik.archetype</groupId>
      <artifactId>msgpack-rpc-jersey-blank-archetype</artifactId>
      <version>1.0.5</version>
      <description>Blank Project for Spring Boot + Jersey</description>
    </archetype>
    <archetype>
      <groupId>am.ik.archetype</groupId>
      <artifactId>msgpack-rpc-jersey-blank-archetype</artifactId>
      <version>1.0.2</version>
      <description>Blank Project for Spring Boot + Jersey</description>
    </archetype>
    <archetype>
      <groupId>am.ik.archetype</groupId>
      <artifactId>mvc-1.0-blank-archetype</artifactId>
...................
...................
    如下省略13W行......
複製文件到編輯器可知,文件長達13W行,文件大加上網絡緣由,致使訪問速度很慢。
解決方案:
如上分析可知,是因爲achetype-catalog.xml文件的訪問問題,致使了整個構建過程的緩慢,因此是否可以將文件保存到本地,成爲一種解決思路。翻閱Maven官方文檔能夠找到,確實是能夠的。官方連接以下:

http://maven.apache.org/archetype/maven-archetype-plugin/specification/archetype-catalog.html按照以下步驟:react

1)準備archetype-catalog.xml文件
        方式1:經過瀏覽器查看http://repo.maven.org/maven2/archetype-catalog.xml頁源碼,複製到本地,命名爲archetype-catalog.xml。
        方式2:經過命令行  curl http://repo.maven.org/maven2/archetype-catalog.xml > archetype-catalog.xml

  2)將上述文件放置到maven的默認路徑下
        注意,這不是指的安裝路徑,而是mvn運行時默認的存放repository的路徑,通常在用戶根目錄下的一個隱藏目錄,~/.m2。若是作過更改,能夠在maven的設置文件中查看             具體在哪一個位置,設置文件在maven安裝目錄/config/settings.xml中。

  3)在構建時,在archetype:generate後加上 -DarchetypeCatalog=local參數。

解決,Have fun!再次嘗試構建項目骨架,飛通常的感受。apache

archetype-catalog.xml文件下載地址: 連接:http://pan.baidu.com/s/1pLo0s7T 密碼:32dy瀏覽器

相關文章
相關標籤/搜索