自动化构建工具真是缭乱纷呈,最早的 make, nmake, 到 Ant, NAnt, 进化到面向对象的 Maven, Gradle,由 Scala 而起的 SBT, SBuild,再就是今天要说的由 node.js 建立起的生态 Grunt。 Grunt 可以做什么呢,理论上只要有相应的插件支持,它可以应对任何构建任务,但它更为有力的表现是在前端方面。
Grunt 是运行在 node.js 环境,由 npm 来安装,所以首先要安装 node.js, npm, 它们俩的安装不多说,我这里的版本分别是:unmi@localhost ~> node --version
运行 Grunt 还要安装 grunt-cli, 使用命令 npm install -g grunt-cli,安装后我机器上 Grunt 的版本是 Read More
v0.10.24
unmi@localhost ~> npm --version
1.3.21- 在 Java 项目里多用 Ant 来自动构建项目,随着惯性思维,很容易就找到了 .Net 里也有类似的构建工具 NAnt。最该死的是连 Maven 在 .net 中的对应产物 NMaven 也都有了,http://sourceforge.net/projects/nmaven/。从 Ant 到 NAnt 自然会有一种驾轻就熟的感觉。其实 MS 也为我们提供了相应的构建工具,如早先的 nmake 和现在的 MSBuild,它们各自用特定的构建文件,只是纯粹的项目构建工具。
NAnt 能让你完成许多的系统操作,并且是扩展的,它能独立的完成诸如取版本、编译、打包、发布、Email 通知等一系列过程。如果再让 NAnt 结合 MSBuild 便能制作出完全自动化,一劳永逸,简单化的构建方案。比如这里的例子讲述了如何用 NAnt 构建一个 WebSite 项目,并把生成的多个动态库,像:App_Web_j_5i4fnt.dll、App_Code.dll、App_global.asax.dll 用 aspnet_merge.exe 命令合成为一个固定名字的动态库,如 Unmi.Web.dll。这样非常有利于站点的部分更新。 Read More - 现在基本用 Eclipse,所有的操作都在无声无息中进行的,除了操作系统带来的咔嚓声还有你的呼哧声。怀念起使用 JBuilder 的时代了,在 JBuilder 中编译、执行程序或 Ant 脚本,在成功或失败时都有不同的声音提醒。
那我们不妨也来用 JFugue 让 Ant 构建成功或失败时发出不同的声音,关于 JFugue 的使用在 让 Java 轻松乐动起来,使用 JFugue 制作自己的音乐 介绍过。这样我们就能在闭目养神中完成 Ant 的构建,听声音就知道成功还是失败。当然,敏捷过程中多是在晚上无人值守的时候完成自动构建,那晚上可要小心,别吓着鬼了。
实现原理,启动 ant 时用参数 -logger YourLoggerClass 指定你自己的 Logger 类(也是一个监听器),在你的 Logger 类的 buildFinished(BuildEvent event) 时,发现无异常,表示成功,用 JFugue 发出一种声音,有异常时,表时失败,用 JFugue 发出另外一种声音。 Read More
网上找了好些个关于CheckStyle的文章都是抄抄抄一大通,却没有一个build.xml着实可运行,
在这里我也是参考着一编,改改成能成功运行并能生成正确报告,发送 Email 的build.xml文件1<?xml version="1.0" encoding="gb2312"?> 2 3<!-- ANT make file checkstype --> 4 5<!-- See <a href="http://jakarta.apache.org/ant" data-mce-href="http://jakarta.apache.org/ant">http://jakarta.apache.org/ant</a> for info about ANT --> 6<!-- 网上下来的CheckStyle解压在d:/javalib/CheckStyle/checkstyle-4.1中 --> 7<project name="checkstyle" default="checkstyle" basedir="d:/javalib/CheckStyle/checkstyle-4.1"> 8 9 <!-- CheckStyle配置,这里你替换成你实际的环境 --> 10 <property name="project.docs.dir" value="${basedir}/contrib"/> 11 12 <!-- 源代码的目录是e:/eclipseworkspace/talupdate/src --> 13 <property name="project.src.dir" value="e:/eclipseworkspace/talupdate/src"/> 14 15 <!-- 建立了build目录在其中生成报告 --> 16 <property name="project.checkstyleReport.dir" value="${basedir}/build"/> 17 <property name="checkstyle.jar" value="${basedir}/checkstyle-all-4.1.jar"/> 18 19 <!-- 使用SUN的代码规范,可替换成公司自己的规范 --> 20 <property name="checkstyle.config" value="${basedir}/sun_checks.xml"/> 21 <property name="checkstyle.report.style" value="${project.docs.dir}/checkstyle-noframes.xsl"/> 22 <property name="checkstyle.result" value="${project.checkstyleReport.dir}/checkstyle_result.xml"/> 23 <property name="checkstyle.report" value="${project.checkstyleReport.dir}/checkstyle_report.html"/> 24 25 <!-- 定义发送邮件列表 --> 26 <property name="mail.list" value="(User1)user1@xxx.com,(User2)user2@xxx.com"/> 27 28 <target name="init"> 29 <tstamp/> 30 </target> 31 32 <!--CheckStyle脚步--> 33 <taskdef resource="checkstyletask.properties" classpath="${checkstyle.jar}"/> 34 35 <target name="checkstyle" depends="init" description="对java源代码进行检查并产生检查报告. "> 36 <checkstyle config="${checkstyle.config}" failOnViolation="false" failureProperty="checkstyle.failure"> 37 <formatter type="xml" tofile="${checkstyle.result}"/> 38 <fileset dir="${project.src.dir}" includes="**/*.java"/> 39 </checkstyle> 40 41 <!-- 生成报告,其格式取决于${checkstyle.report.style} --> 42 <style in="${checkstyle.result}" out="${checkstyle.report}" style="${checkstyle.report.style}"/> 43 </target> 44 45 <!-- 当有不规范的情况发生时将检查结果发送到 --> 46 <target name="checkstyle-nightly" depends="checkstyle" if="checkstyle.failure" 47 description="Sends email if checkstyle detected code conventions violations."> 48 49 <!-- 如果邮件服务器需要验证,则加上 user 和 password 属性 --> 50 <mail from="(Admin)admin@xxx.com" tolist="${mail.list}" mailhost="mail.xxx.com" 51 subject=" checkstyle result from project reports" files="${checkstyle.report}"/> 52 </target> 53</project>
<继续补充内容>