今后告别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浏览器

相关文章
相关标签/搜索