mavener试用gradle

gcd8 9年前

老话,适合的才是最好的。
此处不做gradle和maven的比较。只说下我,一个偏执的maven用户如何尝试使用gradle的经验。

我用maven好些年了,自己机器上还搭了个nexus。
最近看到有个demo需要gradle才能跑起来,于是打算尝试下。

首先gradle的下载、配置,对一个程序猿来说,这都不是事,如果这都搞不定,可能你有点点不太适合做这一行。
Win7下,直接用setx设置环境变量。
先设置gradle的安装目录或者说是解压缩出来的目录,这个目录下至少应该保留有bin、lib,其他文件或者目录偏执狂可以尽情删掉。

setx GRADLE_HOME "E:\gradle"

再把gradle的可执行文件路径加入到Path变量里。为什么要加?因为想不带路径的执行一个命令(exe、bat、cmd之类),就需要在命令搜索路径列表中把这个命令所在的路径加进去。

setx Path ".;%%GRADLE_HOME%%\bin;"

gradle和maven一样,都是要把jar包下到本地缓存起来的。
gradle可以复用maven的私有仓库和中央仓库。中央仓库什么的先不管,偏执狂大多关心的是gradle如何先复用maven已经下好的jar包,那些没有的jar包再下到gradle的缓存目录。

gradle官网和度娘给出的一些教程上,都说

repositories {     mavenLocal()  }

命令行切到demo目录,执行gradle jettyRun试了试,C盘用户目录刷刷的下东西。
原因是gradle默认是下载C盘用户目录的。
度娘是不会告诉你如何设置一个长期的缓存目录的。谷哥知道,但是需要懂科学。
谷哥给了多种设置方法:系统环境变量、jvm环境变量、gradle命令行参数等等。我选择比较简单也相对长期的系统环境变量设置方式。
把gradle缓存目录指向了gradle安装目录下的.gradle目录

setx GRADLE_USER_HOME %GRADLE_HOME%\.gradle

设置完成后,删了C盘用户目录gradle下的东西。重新启动gradle jettyRun。这回没往C盘用户目录写了,写在了%GRADLE_HOME%\.gradle 这个目录里。mavenLocal()拼写没错啊,build.gradle也没错啊,但是以往maven下过的jar包还是在重复下,果断ctrl+c。

度娘问了半天是没结果的,从谷哥给的建议找到官网,上面介绍了复用maven本地仓库的搜索路径,主要是通过maven的settings.xml。
maven配置用的默认的那些朋友,自然不会碰到我这样的问题。因为可以直接在C盘用户目录找到这个settings.xml。
如果设置了M2_HOME的那些朋友,自然也不会碰到我这样的问题。因为可以直接在M2_HOME下的conf目录找到这个settings.xml。

像我这样只配了maven可执行路径到Path环境变量的朋友,自然会碰到我这样的问题。解决方法很easy,把M2_HOME这个环境变量加上,值就是maven的安装目录。

setx M2_HOME %MAVEN_HOME%

设置完成后,删了%GRADLE_HOME%\.gradle 这个目录的东西。重新启动gradle jettyRun。愉快的看着demo顺利启动了,没有重复下jar包,都利用的maven本地仓库已有的包。

送给爱折腾想尝试gradle的mavener。

题外话,eclipse的maven插件最近几个版本好像是已经集成了。起码kepler和luna都有的。gradle的插件要从springsource的插件库去装。蛋疼的CMCC网速下了好几次到一半都timeout了,幸好照猫画虎借了点科学姿势,配了代理顺利安装好了。gradle的插件里面的配置,建议手工写成gradle安装目录的地址。用默认配置的话,会自己下个gradle并且把缓存下到C盘。

很多时候需要找jar包的依赖树,maven的插件很直观的看到,gradle插件就比较头疼了,铁定是我不会用。想来想去,虽然gradle比较简洁、强大(执行自定义任务方面),最后还是觉得maven比较适合我,对我来说maven这个工具也算是最好的了。