zoukankan      html  css  js  c++  java
  • Maven构建项目速度太慢的解决办法 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是如何构建出整个项目的呢?它的知识来源于哪里呢?答案是:

     
    1. http://repo1.maven.org/maven2/archetype-catalog.xml  

    这里记录了,所有archetype构建信息,maven通过archetype插件构建项目骨架时会远程访问页面,通过maven的-X参数可以证明这一点--调试方法

    .............  
    [DEBUG] -- end configuration --  
    [INFO] Generating project in Batch mode  
    [DEBUG] Searching for remote catalog: http://repo1.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 

    按照如下步骤:

          1)准备archetype-catalog.xml文件

                方式1:通过浏览器查看http://repo1.maven.org/maven2/archetype-catalog.xml页源码,复制到本地,命名为archetype-catalog.xml。

                方式2:通过命令行  curl http://repo1.maven.org/maven2/archetype-catalog.xml > archetype-catalog.xml

          2)将上述文件放置到maven的默认路径下

                注意,这不是指的安装路径,而是mvn运行时默认的存放repository的路径,一般在用户根目录下的一个隐藏目录,~/.m2。如果做过更改,可以在maven的设置文件中查看             具体在哪个位置,设置文件在maven安装目录/config/settings.xml中。

          3)在构建时,在archetype:generate后加上 -DarchetypeCatalog=local参数。(IDE如eclipse和idea,都是可以在创建maven工程时设置构建参数的,这里不再截图说明了)

    解决,Have fun!再次尝试构建项目骨架,飞一般的感觉。

    参考资料:

    http://maven.apache.org/archetype/maven-archetype-plugin/specification/archetype-catalog.html

  • 相关阅读:
    改造vant日期选择
    css3元素垂直居中
    npm综合
    (转)网页加水印方法
    Mac下IDEA自带MAVEN插件的全局环境配置
    隐藏注册控件窗口
    High performance optimization and acceleration for randomWalk, deepwalk, node2vec (Python)
    How to add conda env into jupyter notebook installed by pip
    The Power of WordNet and How to Use It in Python
    背单词app测评,2018年
  • 原文地址:https://www.cnblogs.com/duanxz/p/3154982.html
Copyright © 2011-2022 走看看