codecamp

使用 Ant 编译

简单介绍

如果你不知道怎么从 github 上下载 Nutz 的源代码,请看 从 Git 编译 一节

编译通常是个麻烦的问题,依赖关系啊,环境变量啊,等等,全是些没有技术含量的东 东,但是却能搞的你非常头疼。虽然编译 Nutz 是一个相对简单的工作 -- 它编译 的时候不需要依赖第三方 jar 包,但是还是有一些工作要做的。

从我个人的情况来看,我经常在如下三个环境下进行 Nutz 的开发:

  • 公司 - Vista
  • 家 - Ubuntu
  • 笔记本 - Win XP

我这三台机器由于安装的时候不同,加上我是一个比较随意的人,所有依赖库的位置均 有所不同,但是我配置编译环境基本上能在5分钟搞定。写这个介绍的目的就是分享我 的一些经验,帮助大家远离痛苦,选择欢乐。

Nutz 提供 Ant 编译的脚本,在 Ant 运行前,你需要配置几个环境变量,在你的 命令行客户端输入 ant,查看一下你的 ant 安装没有,如果没有请先从 它的官方网站下载。你还需要检查:

  1. Java 是否安装,Nutz 需要至少 1.6 以上版本
  2. servlet-api,暂时只适用 2.5 版本的 servlet-api,
  3. Log4j 在编译时需要它。 当然,运行时,我们不一定需要 Log4j

有了这些我们就可以顺利编译 Nutz 了。

我们提供了两个 ant 脚本:

  • build.xml - 快速编译,只编译 nutz.jar
  • build2.xml - 全面的编译 nutz 的 jar,文档,并运行单元测试,等等

build.xml - 快速编译脚本

这个是我在开发中最常用到的编译脚本,我其他的基于 Nutz 的项目在,在 Nutz 代码更新时,我就运行一下,其他的项目一刷新,就升级到这个 Jar 文件了。

在 /build 目录下你能看到 build.bat(写给 windows的)以及 build(写给 Linux)的。你可以将其拷贝到你的 PATH 目录下,以便你在控制台 执行。执行前,请先打开脚本文件,修改其中的内容。因为 build.xml 需要如下 环境变量:

  • JAVA_HOME : 你的 JDK 安装目录,这目录下应该有 jre/lib/rt.jar
  • DEPS : 第三方 jar 包存放的目录,这个目录下应该有 log4j.jar、servlet-api.jar
  • OUTPUT : 成功编译后 nutz 的 jar 包的输出目录
  • PROJECT_HOME : Nutz 的项目目录,这个目录下应该有 src 目录

正确的设置这些环境变量后,运行这个脚本,Nutz 的 jar 就会出现在你的输出目录中

build2.xml - 全面编译脚本

每次发布前,我们都会运行一下这个脚本,因为它要运行单元测试,所以你需要更多 的依赖包

这个脚本现在只是用作内部使用,Wendal 在里面做了详细的描述,根据我的经验,只要 你把需要的 jar 包都放在依赖目录下,它会正常运行的。

运行 JUnit 测试 - Maven
Nutz 的包结构
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

表达式引擎

maplist结构

图像处理小军刀

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }