如何正确在Hudson中使用Maven构建Job
相信大家都很有一个疑惑,就是我们在本地使用Hudson 构建Maven Job时,输入clean install 命令会发现它会去重新下载Jar包,一般情况下,我们都会在IDE和命令行调用过Maven构建,按理它应该不会去重新下载依赖才对,抱着和你同样的疑惑,我们现在去看看端倪。
我不打算在任务再调用一次clean install,而是直接使用help:effective-settings命令看看它是否调用我们的用户settings.xml文件。
在这里我先放一份我的用户settings.xml切片。
?
? God,怎么把构件都下载C:\Windows\System32\config\systemprofile\.m2\repository这个位置了。?看来Hudson根本就不认可Maven的环境变量以及用户级settings.xml。
? 还好有神奇的-s参数(--settings)帮忙,这个参数的作用就是让用户指定可运行的settings.xml文件。我的用户级settings目录存放在C:\Users\Jdonee\.m2目录下。
? 那么我们目标改成help:effactive-settings -s C:\Users\Jdonee\.m2\settings.xml,马上查看控制台的打印切片:
?
?
?
??? 哈哈,大功告成对不对,可是现在还有点小小的瑕疵,如果我定义很多的Maven任务,新建任务都要再输一遍实在是很麻烦(虽然很多时候,我们会通过复制任务减少一些配置量),而且一旦我迁移到其它系统环境,比如Linux等等,同样也不方便。
?? 所以我们必须要把它定义到全局变量中。
???点击“系统管理”,选择“系统设置”,启用“Environment variables”,新增一个环境变量,输入如Key=yoursettings,Value=C:\Users\Jdonee\.m2\settings.xml。
???? 注:key值不要使用特殊字符如"-"等,以免命令行不认。
???关于Environment variables的官方解释是:这些键值对每个节点上的每个应用都有效.它们可以在Hudson配置(如$key或者${key})中使用, 并且在每个构建启动时被加入到环境变量中.
?? 好了,我们在Job的目标更改为help:effective-settings -s $yoursettings执行,控制台打印更上面的切片一样,Perfact!
help:effactive-settings -s $yoursettings
又学了一个新用法。