博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Maven构建项目速度太慢的解决办法
阅读量:7217 次
发布时间:2019-06-29

本文共 3044 字,大约阅读时间需要 10 分钟。

hot3.png

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://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+分钟)  ..............

直接在浏览器打开这个链接的速度一样非常慢。打开后通过浏览器的查看源码功能,如下所示:

am.ik.archetype
maven-reactjs-blank-archetype
1.0.0
Blank Project for React.js
am.ik.archetype
msgpack-rpc-jersey-blank-archetype
1.0.7
Blank Project for Spring Boot + Jersey
am.ik.archetype
msgpack-rpc-jersey-blank-archetype
1.0.6
Blank Project for Spring Boot + Jersey
am.ik.archetype
msgpack-rpc-jersey-blank-archetype
1.0.5
Blank Project for Spring Boot + Jersey
am.ik.archetype
msgpack-rpc-jersey-blank-archetype
1.0.2
Blank Project for Spring Boot + Jersey
am.ik.archetype
mvc-1.0-blank-archetype
......................................以下省略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!再次尝试构建项目骨架,飞一般的感觉。

转载于:https://my.oschina.net/jimilee/blog/854545

你可能感兴趣的文章
Jedis、JedisPool、ShardedJedis和ShardedJedisPool,java对redis的基本操作
查看>>
[转载] 致命伴侣
查看>>
HTML5 localStorage本地存储实际应用举例
查看>>
Scala访问修饰符
查看>>
实习感悟
查看>>
产品经理网站小结
查看>>
Bootstrap 附加导航插件
查看>>
如何设置启动SMTP、POP3以及IMAP4的SSL服务端口?
查看>>
自制函数strcpy
查看>>
gSoap开发(三)——WSDL简介
查看>>
软件RAID5项目实战!!!
查看>>
Java基础学习总结(21)——数组
查看>>
js格式化日期
查看>>
定时与延时任务
查看>>
Squid 日志分析 和反向代理
查看>>
Hadoop的安装及一些基本概念解释
查看>>
大容量分区命令parted
查看>>
从输入 URL 到页面加载完成的过程中都发生了什么事情?
查看>>
实例讲解JQuery中this和$(this)区别
查看>>
centos 7 静态ip地址模板
查看>>