<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <title>sys53</title>
    <description>我不是踢球的申思</description>
    <link>http://sys53.javaeye.com</link>
    <language>UTF-8</language>
    <copyright>Copyright 2003-2008, JavaEye.com</copyright>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <generator>JavaEye - 做最棒的软件开发交流社区</generator>
          <item>
        <title>CSDN怎么了？</title>
        <author>sys53</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://sys53.javaeye.com">sys53</a>&nbsp;
                    链接：<a href="http://sys53.javaeye.com/blog/228573" style="color:red;">http://sys53.javaeye.com/blog/228573</a>&nbsp;
          发表时间: 2008年08月16日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          已经快半个月了．<br />CSDN都一直上不去．<br />不知道出了什么问题？
          <br/><br/>
          <span style="color:red;">
            <a href="http://sys53.javaeye.com/blog/228573#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 16 Aug 2008 09:59:23 +0800</pubDate>
        <link>http://sys53.javaeye.com/blog/228573</link>
        <guid>http://sys53.javaeye.com/blog/228573</guid>
      </item>
          <item>
        <title>关于hk.www404.cn:53/ads.js病毒问题清除．</title>
        <author>sys53</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://sys53.javaeye.com">sys53</a>&nbsp;
                    链接：<a href="http://sys53.javaeye.com/blog/197220" style="color:red;">http://sys53.javaeye.com/blog/197220</a>&nbsp;
          发表时间: 2008年05月26日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          昨天发现在家网络中一访问网页，包括 www.javaeye.com，在网页源代码中都会增加<br />&lt;script src="hk.www404.cn:53/ads.js">&lt;/script><br />的代码，但是www.google.cn没有问题．<br />据了解，此是因为网络中某一台电脑中了ARP病毒引起的．<br />解决方法很简单：<br />进入CMD，执行：　arp -a　　　　　　　　－－查看ARP信息，找到网关地址，发现网关地址中的MAC非真正网关的MAC<br />再执行：　　　　　arp -d 网关IP（192.168.1.1） --删除192.168.1.1的ARP信息<br />再执行：　　　　　arp -a&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --查看网关地址是否与真实网关MAC一样<br />如果不一样，多次执行：　arp -d 网关IP（192.168.1.1）<br /><br />还有其它方法可进行ARP伪造，请上google 查看arp病毒解决方案．
          <br/><br/>
          <span style="color:red;">
            <a href="http://sys53.javaeye.com/blog/197220#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 26 May 2008 22:18:12 +0800</pubDate>
        <link>http://sys53.javaeye.com/blog/197220</link>
        <guid>http://sys53.javaeye.com/blog/197220</guid>
      </item>
          <item>
        <title>给我的小侄儿取名</title>
        <author>sys53</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://sys53.javaeye.com">sys53</a>&nbsp;
                    链接：<a href="http://sys53.javaeye.com/blog/182069" style="color:red;">http://sys53.javaeye.com/blog/182069</a>&nbsp;
          发表时间: 2008年04月12日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          我的小侄儿昨天中午 12:30 诞生了.好开心!<br /><br />通过网上:我给我的小侄儿取一个好听的名字--沈子涵<br /><br />综合评分:99.7
          <br/><br/>
          <span style="color:red;">
            <a href="http://sys53.javaeye.com/blog/182069#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 12 Apr 2008 13:24:28 +0800</pubDate>
        <link>http://sys53.javaeye.com/blog/182069</link>
        <guid>http://sys53.javaeye.com/blog/182069</guid>
      </item>
          <item>
        <title>Struts2 文本域中数值格化的疑问</title>
        <author>sys53</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://sys53.javaeye.com">sys53</a>&nbsp;
                    链接：<a href="http://sys53.javaeye.com/blog/182053" style="color:red;">http://sys53.javaeye.com/blog/182053</a>&nbsp;
          发表时间: 2008年04月12日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          在Struts2.0.11.1版本,相应的指南中<br /><a href="http://struts.apache.org/2.0.11.1/docs/formatting-dates-and-numbers.html" target="_blank">http://struts.apache.org/2.0.11.1/docs/formatting-dates-and-numbers.html</a><br />Localizing form data with getText<br />Localizing form data with getText<br /><strong>Placing a textfield in a form like this</strong><br /><br /><pre name="code" class="java">&lt;s:textfield key="orderItem.price" /></pre><br /><div class="quote_title">引用</div><div class="quote_div">to input a number, one might have noticed that the number is always shown in the Java default number format. Not only that this is not "nice", if you are in a non-en locale, it will also cause trouble when submitting the form since type conversion is locale aware. The solution is to again use the message formats as defined above, by using the getText Method of ActionSupport:</div><br /><br /><pre name="code" class="java">&lt;s:textfield key="orderItem.price" value="%{getText('format.number',{'orderItem.price'})}" /></pre><br /><div class="quote_title">引用</div><div class="quote_div">This maps to the method signature getText( String key, Object[] params ) in ActionSupport.</div><br /><br />我在页面中如下使用:<br /><pre name="code" class="java">&lt;s:textfield key="orderOprRecord.jsFee" value="%{getText('format.number',{'orderOprRecord.jsFee'})}" size="8"/></pre><br /><br />发现调用的是: <br />getText( String key, List args) in ActionSupport.<br />而非<br />getText( String key, Object[] params ) in ActionSupport<br />当然,这二个方法其实都调用同一个函:<br /><pre name="code" class="java">LocalizedTextUtil.findText(clazz, key, getLocale(), defaultValue, argsArray);</pre><br />详见:xwork-2.04,TextProviderSupport.java<br />最终发现,argsArrays为:['orderOprRecord.jsFee']<br />最后在LocalizedTextUtil.java,第590行<br /><pre name="code" class="java">if (message != null) {
                MessageFormat mf = buildMessageFormat(TextParseUtil.translateVariables(message, valueStack), locale);

                String msg = mf.format(args);
                result = new GetDefaultMessageReturnArg(msg, found);
            }</pre><br />String msg = mf.format(args);<br />这时,agrs内的值仍是:['orderOprRecord.jsFee']<br />自始自终没有经过处理,即没有在ValueStack中取出对应的值.<br />所以msg最后的值为空.<br /><br />下面的难道是:struts2的手册的作者的笔误吗?<br /><pre name="code" class="java">&lt;s:textfield key="orderItem.price" value="%{getText('format.number',{'orderItem.price'})}" /></pre>
          <br/><br/>
          <span style="color:red;">
            <a href="http://sys53.javaeye.com/blog/182053#comments" style="color:red;">已有 <strong>2</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 12 Apr 2008 13:17:01 +0800</pubDate>
        <link>http://sys53.javaeye.com/blog/182053</link>
        <guid>http://sys53.javaeye.com/blog/182053</guid>
      </item>
          <item>
        <title>作为面试官所提的问题</title>
        <author>sys53</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://sys53.javaeye.com">sys53</a>&nbsp;
                    链接：<a href="http://sys53.javaeye.com/blog/169468" style="color:red;">http://sys53.javaeye.com/blog/169468</a>&nbsp;
          发表时间: 2008年03月09日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          第一，自我介绍，主要讲学习与工作经历。（有些应聘者写了简历觉得很反感，特别是工作有几年，认为有点份量了）<br />目的：主要目的是在于沟通，以及诚实信一些简单了解。<br />第二，项目经验。<br />目的：了解已有的技能，当然最主要的还是沟通与诚信度的再次认识。<br />第三，具体技能的考核，一些专业技术特点的考核。一般都是从浅到深（因人而异），主要确定能胜任什么样的具体工作。<br />第四，对于应聘者的个人想法，主要还是了解基想法与公司是否附合，以及公司能不能提供应聘者的发展情况。如果真能本公司上班，也能提高应聘者的工作积极性。<br /><br />其它就是一些细节！
          <br/><br/>
          <span style="color:red;">
            <a href="http://sys53.javaeye.com/blog/169468#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 09 Mar 2008 11:47:52 +0800</pubDate>
        <link>http://sys53.javaeye.com/blog/169468</link>
        <guid>http://sys53.javaeye.com/blog/169468</guid>
      </item>
          <item>
        <title>myeclipse6.0注册码收藏</title>
        <author>sys53</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://sys53.javaeye.com">sys53</a>&nbsp;
                    链接：<a href="http://sys53.javaeye.com/blog/136063" style="color:red;">http://sys53.javaeye.com/blog/136063</a>&nbsp;
          发表时间: 2007年10月28日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <font color="#000000"><font face="黑体">Subscriber: <font size="3">www.1cn.biz</font></font><br />
</font><font color="#000000"><font size="3" face="黑体">Subscriber Code: jLR8ZC-655355-5450765457039125<br />
或者<br />
Subscriber: </font><font size="3" face="黑体">www.1cn.biz</font><br />
<font size="3" face="黑体">Subscriber Code: jLR7ZL-655355-5450755330522962</font></font>&nbsp;<br />
<br />
<p id="TBPingURL">Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1758425</p>
          <br/><br/>
          <span style="color:red;">
            <a href="http://sys53.javaeye.com/blog/136063#comments" style="color:red;">已有 <strong>5</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 28 Oct 2007 11:58:23 +0800</pubDate>
        <link>http://sys53.javaeye.com/blog/136063</link>
        <guid>http://sys53.javaeye.com/blog/136063</guid>
      </item>
          <item>
        <title>一个怪异的hibernate保存实体失败问题</title>
        <author>sys53</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://sys53.javaeye.com">sys53</a>&nbsp;
                    链接：<a href="http://sys53.javaeye.com/blog/119942" style="color:red;">http://sys53.javaeye.com/blog/119942</a>&nbsp;
          发表时间: 2007年09月03日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>以前没有遇到过，因为以前没有用spring。</p>
<p>下面service层代码：</p>
<div class="code_title">java 代码</div>
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-j">
    <li class="alt"><span><span class="keyword">public</span><span>&nbsp;</span><span class="keyword">boolean</span><span>&nbsp;updateOrderBill(Long&nbsp;id)&nbsp;{ &nbsp;&nbsp;</span></span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OrderBill&nbsp;ob&nbsp;=&nbsp;</span><span class="keyword">this</span><span>.getOrderBillDao().getOrderBill(id); &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ob.setName(ob.Name()+</span><span class="string">&quot;1&quot;</span><span>); &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;getOrderBillDao().saveOrderBill(ob); &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span>&nbsp;</span><span class="keyword">true</span><span>; &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span> </li>
</ol>
</div>
<p>junit测试代码：</p>
<div class="code_title">java 代码</div>
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-j">
    <li class="alt"><span><span class="annotation">@Test</span><span>&nbsp;&nbsp;</span></span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span>&nbsp;</span><span class="keyword">void</span><span>&nbsp;testReservFailed(){ &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;orderBillService.updateOrderBill(Long.valueOf(</span><span class="number">12530</span><span>)); &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OrderBill&nbsp;ob&nbsp;=&nbsp;orderBillService.getOrderBill(Long.valueOf(</span><span class="number">12530</span><span>)); &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(ob.getName()); &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span> </li>
</ol>
</div>
<p>执行时：根本没有保存进行，并且也没有在控制台看到：update语句</p>
<p>service代码改写成：</p>
<div class="code_title">java 代码</div>
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-j">
    <li class="alt"><span><span class="keyword">public</span><span>&nbsp;</span><span class="keyword">boolean</span><span>&nbsp;updateOrderBill(Long&nbsp;id)&nbsp;{ &nbsp;&nbsp;</span></span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OrderBill&nbsp;ob&nbsp;=&nbsp;</span><span class="keyword">this</span><span>.getOrderBillDao().getOrderBill(id); &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ob.setHotelName(ob.getName()+</span><span class="string">&quot;1&quot;</span><span>); &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;getOrderBillDao().excuteUpdate(</span><span class="string">&quot;update&nbsp;OrderBill&nbsp;as&nbsp;obj&nbsp;set&nbsp;obj.name='&quot;</span><span>+ob.getName()+</span><span class="string">&quot;1&quot;</span><span>+</span><span class="string">&quot;'&nbsp;where&nbsp;obj.orderBillId=&quot;</span><span>+id); &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span>&nbsp;</span><span class="keyword">false</span><span>; &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span> </li>
</ol>
</div>
<p>就更新成功了。</p>
<p>很奇怪，难道不去判断对象被弄脏了吗？</p>
<p>注意用的版本是：hibernate 3.2.5ga ,spring2.0.6</p>
          <br/><br/>
          <span style="color:red;">
            <a href="http://sys53.javaeye.com/blog/119942#comments" style="color:red;">已有 <strong>10</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 03 Sep 2007 21:22:32 +0800</pubDate>
        <link>http://sys53.javaeye.com/blog/119942</link>
        <guid>http://sys53.javaeye.com/blog/119942</guid>
      </item>
          <item>
        <title>spring事务与OpenSessionInView Filter的矛盾</title>
        <author>sys53</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://sys53.javaeye.com">sys53</a>&nbsp;
                    链接：<a href="http://sys53.javaeye.com/blog/119234" style="color:red;">http://sys53.javaeye.com/blog/119234</a>&nbsp;
          发表时间: 2007年09月01日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>事务与OpenSessionInView&nbsp;Filter天生就是一对矛盾！<wbr></wbr><br />
主要还在于一个事务粒度的问题，如何才能真正的让OpenSessionInView&nbsp;Filter与事务真正共存呢？<br />
基于google的资料，有四个解决方法，但都没有彻底解决，其问题还是粒度？<br />
如：扩展OpenSessionInView&nbsp;Filer对象，把sessionFlushMode设为Commit，就意味着事务是整个request层，最终在action为了展示而进行弄脏了数据导致数据被更改。如果默认，FlushMode.NEVER模式下，操作数据会报read.only异常。<br />
如果把dao方法，直接flush掉，那就意味着事务粒度只能加载到dao层，在service层的二个dao对数据库操作，事务不同步，如一个dao操作成功另一个失败。如何解决呢？<br />
思路应该是这样：OpenSessionlnVierFilter仍然存在，或者在service层增加一个aop，这个aop表示在操作service层函数进入时把session设为commit，执行完毕业进行session.commit，这样可以解决。找了好多资料，没有一个现存的解决方案，只好自己动手写个aop，事务管理。</p>
<p>花了一天，还没有搞出一个结果。继续看事务，了解如何在需要求进行事务提交的时候进行session FlushMode的更改。如何通过spring可配置方式进行，直接可编程肯定是可以的。</p>
          <br/><br/>
          <span style="color:red;">
            <a href="http://sys53.javaeye.com/blog/119234#comments" style="color:red;">已有 <strong>1</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 01 Sep 2007 18:48:45 +0800</pubDate>
        <link>http://sys53.javaeye.com/blog/119234</link>
        <guid>http://sys53.javaeye.com/blog/119234</guid>
      </item>
          <item>
        <title>功能与产品</title>
        <author>sys53</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://sys53.javaeye.com">sys53</a>&nbsp;
                    链接：<a href="http://sys53.javaeye.com/blog/117138" style="color:red;">http://sys53.javaeye.com/blog/117138</a>&nbsp;
          发表时间: 2007年08月27日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          功能与产品在一定意义上来说是统一个东西。或者对&ldquo;客户&rdquo;&ldquo;使用者&rdquo;来说是如此。<br />
对于开发者来说，这是完全不同的东西。<br />
功能是一个产品的用途，而产品是成熟完善功能，是不允许有明显操作bug与逻辑错误的。<br />
然后，现实中，凭个人经验来说，或者说所谓的&ldquo;国内&rdquo;来说，现在的产品中大多是粗糙的功能现实。造成这个现实的状况原因是多点的，主要还是三个主观因素引起的。<br />
第一、BOSS，老板总是想最快的推出产品来适应市场需要（或者是市场引起的）<br />
第二、职能部门，主要是前期的调研工作不够详细，需求不明确，相关业务不能完整的体现，或者体现时不能适应可能存在的变动，导致开发后期经常性改动业务流程。<br />
第三、研部团队，其实第二点也与这个主观因素相关，主要开发人员的思考问题的完整性与全面性的，以及测试人员的真实仿真性，全面性。在这个过程中是需要与&ldquo;客户&rdquo;&ldquo;使用者&rdquo;定期或随时交互演示的过程。当有一个测试版本出来以后，要让上述角色进行使用、质疑、并改进的过程当然这个时候肯定不是最终产品，最多也只是功能实现。<br />
对于一个产品来说，一旦上线，一般是不轻易改动，或者改动周期是比较长的，有新的功能需求，都必须严格执行软件开发过程。否则这个发布的版本本身就是一个测试版本。而现实中，往往不能做到这一点，任意的变动需求，因新功能而随时升级&ldquo;产品&rdquo;，因满足特殊需求立级更新产品，这个本身原本是为最终使用者服务，但同时也可能造成最终使用者的另类问题--隐性BUG。这种活动的项目在研发过程是比较难控制的造成结果可能会是二个，一个是BUG多或者是功能性问题解决滞后。现实过程只能根据情况来决定哪一种后果。<br />
再次提到一下敏捷团队，一个好的敏捷团队，每个成员都是很全面的技术与业务分析能力，敏捷团队成员不必太多，每一个成员都是贡一下块功能，并且是一个自我学习的团队，这样的团队来做这种项目，理论上来说是最合适的。<br />
...<br />
继续思考
          <br/><br/>
          <span style="color:red;">
            <a href="http://sys53.javaeye.com/blog/117138#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 27 Aug 2007 12:19:21 +0800</pubDate>
        <link>http://sys53.javaeye.com/blog/117138</link>
        <guid>http://sys53.javaeye.com/blog/117138</guid>
      </item>
          <item>
        <title>有智慧的一段話</title>
        <author>sys53</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://sys53.javaeye.com">sys53</a>&nbsp;
                    链接：<a href="http://sys53.javaeye.com/blog/110089" style="color:red;">http://sys53.javaeye.com/blog/110089</a>&nbsp;
          发表时间: 2007年08月08日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p><font face="Arial">有智慧的一段話：「 距離！]</font></p>
<p>看附件</p>
          <br/><br/>
          <span style="color:red;">
            <a href="http://sys53.javaeye.com/blog/110089#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 08 Aug 2007 11:06:12 +0800</pubDate>
        <link>http://sys53.javaeye.com/blog/110089</link>
        <guid>http://sys53.javaeye.com/blog/110089</guid>
      </item>
          <item>
        <title>原来明天是我的生日呀</title>
        <author>sys53</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://sys53.javaeye.com">sys53</a>&nbsp;
                    链接：<a href="http://sys53.javaeye.com/blog/109866" style="color:red;">http://sys53.javaeye.com/blog/109866</a>&nbsp;
          发表时间: 2007年08月07日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p><font face="Arial">原来明天是我的生日呀，感谢老妈的提醒。N年前，您辛苦了。</font></p>
<p>祝自己生日快乐，早日找到一个女朋友，哈哈。</p>
          <br/><br/>
          <span style="color:red;">
            <a href="http://sys53.javaeye.com/blog/109866#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 07 Aug 2007 22:18:26 +0800</pubDate>
        <link>http://sys53.javaeye.com/blog/109866</link>
        <guid>http://sys53.javaeye.com/blog/109866</guid>
      </item>
          <item>
        <title>struts2-number-plugin插件简单源代码</title>
        <author>sys53</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://sys53.javaeye.com">sys53</a>&nbsp;
                    链接：<a href="http://sys53.javaeye.com/blog/109077" style="color:red;">http://sys53.javaeye.com/blog/109077</a>&nbsp;
          发表时间: 2007年08月05日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p><font face="Arial">struts2-number-plugin插件简单源代码</font></p>
<p>功能就是成文本输入框，或者文本显示时，数据与日期格式可以自定义显示，至于用法按我之前的二篇文章所写。</p>
<p>&nbsp;</p>
          <br/><br/>
          <span style="color:red;">
            <a href="http://sys53.javaeye.com/blog/109077#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 05 Aug 2007 08:37:20 +0800</pubDate>
        <link>http://sys53.javaeye.com/blog/109077</link>
        <guid>http://sys53.javaeye.com/blog/109077</guid>
      </item>
          <item>
        <title>写了一个struts2-number-plugin插件</title>
        <author>sys53</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://sys53.javaeye.com">sys53</a>&nbsp;
                    链接：<a href="http://sys53.javaeye.com/blog/97433" style="color:red;">http://sys53.javaeye.com/blog/97433</a>&nbsp;
          发表时间: 2007年07月03日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>为了格式化钱编辑框的格式，如保留后二位。Struts2没有提供相应的标签。struts1支持property的format属性。</p>
<p>于是自己写了一个关于数据格式化的插件。</p>
<p>在struts2包里的META-INF/struts-tags.tld</p>
<p>新增如下内容：</p>
<font face="Arial">
<div class="code_title">xml 代码</div>
<div class="code_title"><font face="Arial">&nbsp;&lt;tag&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;name&gt;number&lt;/name&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;tag-class&gt;org.apache.struts2.views.jsp.ui.NumberTag&lt;/tag-class&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;body-content&gt;JSP&lt;/body-content&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;description&gt;&lt;![CDATA[Render an HTML input field of type number]]&gt;&lt;/description&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;attribute&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;name&gt;accesskey&lt;/name&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;required&gt;false&lt;/required&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;rtexprvalue&gt;true&lt;/rtexprvalue&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;description&gt;&lt;![CDATA[Set the html accesskey attribute on rendered html element]]&gt;&lt;/description&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;/attribute&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;attribute&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;name&gt;cssClass&lt;/name&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;required&gt;false&lt;/required&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;rtexprvalue&gt;true&lt;/rtexprvalue&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;description&gt;&lt;![CDATA[The css class to use for element]]&gt;&lt;/description&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;/attribute&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;attribute&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;name&gt;cssStyle&lt;/name&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;required&gt;false&lt;/required&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;rtexprvalue&gt;true&lt;/rtexprvalue&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;description&gt;&lt;![CDATA[The css style definitions for element ro use]]&gt;&lt;/description&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;/attribute&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;attribute&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;name&gt;disabled&lt;/name&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;required&gt;false&lt;/required&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;rtexprvalue&gt;true&lt;/rtexprvalue&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;description&gt;&lt;![CDATA[Set the html disabled attribute on rendered html element]]&gt;&lt;/description&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;/attribute&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;attribute&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;name&gt;displayFormat&lt;/name&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;required&gt;false&lt;/required&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;rtexprvalue&gt;true&lt;/rtexprvalue&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;description&gt;&lt;![CDATA[A pattern used for the visual display of the formatted number, e.g. ##.0#]]&gt;&lt;/description&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;/attribute&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;attribute&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;name&gt;id&lt;/name&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;required&gt;false&lt;/required&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;rtexprvalue&gt;true&lt;/rtexprvalue&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;description&gt;&lt;![CDATA[id for referencing element. For UI and form tags it will be used as HTML id attribute]]&gt;&lt;/description&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;/attribute&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;attribute&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;name&gt;key&lt;/name&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;required&gt;false&lt;/required&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;rtexprvalue&gt;true&lt;/rtexprvalue&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;description&gt;&lt;![CDATA[Set the key (name, value, label) for this particular component]]&gt;&lt;/description&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;/attribute&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;attribute&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;name&gt;label&lt;/name&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;required&gt;false&lt;/required&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;rtexprvalue&gt;true&lt;/rtexprvalue&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;description&gt;&lt;![CDATA[Label expression used for rendering a element specific label]]&gt;&lt;/description&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;/attribute&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;attribute&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;name&gt;labelposition&lt;/name&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;required&gt;false&lt;/required&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;rtexprvalue&gt;true&lt;/rtexprvalue&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;description&gt;&lt;![CDATA[Define label position of form element (top/left)]]&gt;&lt;/description&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;/attribute&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;attribute&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;name&gt;maxLength&lt;/name&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;required&gt;false&lt;/required&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;rtexprvalue&gt;true&lt;/rtexprvalue&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;description&gt;&lt;![CDATA[Deprecated. Use maxlength instead.]]&gt;&lt;/description&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;/attribute&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;attribute&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;name&gt;maxlength&lt;/name&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;required&gt;false&lt;/required&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;rtexprvalue&gt;true&lt;/rtexprvalue&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;description&gt;&lt;![CDATA[HTML maxlength attribute]]&gt;&lt;/description&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;/attribute&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;attribute&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;name&gt;name&lt;/name&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;required&gt;false&lt;/required&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;rtexprvalue&gt;true&lt;/rtexprvalue&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;description&gt;&lt;![CDATA[The name to set for element]]&gt;&lt;/description&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;/attribute&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;attribute&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;name&gt;onblur&lt;/name&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;required&gt;false&lt;/required&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;rtexprvalue&gt;true&lt;/rtexprvalue&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;description&gt;&lt;![CDATA[ Set the html onblur attribute on rendered html element]]&gt;&lt;/description&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;/attribute&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;attribute&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;name&gt;onchange&lt;/name&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;required&gt;false&lt;/required&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;rtexprvalue&gt;true&lt;/rtexprvalue&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;description&gt;&lt;![CDATA[Set the html onchange attribute on rendered html element]]&gt;&lt;/description&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;/attribute&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;attribute&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;name&gt;onclick&lt;/name&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;required&gt;false&lt;/required&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;rtexprvalue&gt;true&lt;/rtexprvalue&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;description&gt;&lt;![CDATA[Set the html onclick attribute on rendered html element]]&gt;&lt;/description&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;/attribute&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;attribute&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;name&gt;ondblclick&lt;/name&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;required&gt;false&lt;/required&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;rtexprvalue&gt;true&lt;/rtexprvalue&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;description&gt;&lt;![CDATA[Set the html ondblclick attribute on rendered html element]]&gt;&lt;/description&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;/attribute&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;attribute&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;name&gt;onfocus&lt;/name&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;required&gt;false&lt;/required&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;rtexprvalue&gt;true&lt;/rtexprvalue&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;description&gt;&lt;![CDATA[Set the html onfocus attribute on rendered html element]]&gt;&lt;/description&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;/attribute&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;attribute&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;name&gt;onkeydown&lt;/name&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;required&gt;false&lt;/required&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;rtexprvalue&gt;true&lt;/rtexprvalue&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;description&gt;&lt;![CDATA[Set the html onkeydown attribute on rendered html element]]&gt;&lt;/description&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;/attribute&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;attribute&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;name&gt;onkeypress&lt;/name&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;required&gt;false&lt;/required&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;rtexprvalue&gt;true&lt;/rtexprvalue&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;description&gt;&lt;![CDATA[Set the html onkeypress attribute on rendered html element]]&gt;&lt;/description&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;/attribute&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;attribute&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;name&gt;onkeyup&lt;/name&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;required&gt;false&lt;/required&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;rtexprvalue&gt;true&lt;/rtexprvalue&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;description&gt;&lt;![CDATA[Set the html onkeyup attribute on rendered html element]]&gt;&lt;/description&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;/attribute&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;attribute&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;name&gt;onmousedown&lt;/name&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;required&gt;false&lt;/required&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;rtexprvalue&gt;true&lt;/rtexprvalue&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;description&gt;&lt;![CDATA[Set the html onmousedown attribute on rendered html element]]&gt;&lt;/description&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;/attribute&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;attribute&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;name&gt;onmousemove&lt;/name&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;required&gt;false&lt;/required&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;rtexprvalue&gt;true&lt;/rtexprvalue&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;description&gt;&lt;![CDATA[Set the html onmousemove attribute on rendered html element]]&gt;&lt;/description&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;/attribute&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;attribute&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;name&gt;onmouseout&lt;/name&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;required&gt;false&lt;/required&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;rtexprvalue&gt;true&lt;/rtexprvalue&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;description&gt;&lt;![CDATA[Set the html onmouseout attribute on rendered html element]]&gt;&lt;/description&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;/attribute&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;attribute&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;name&gt;onmouseover&lt;/name&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;required&gt;false&lt;/required&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;rtexprvalue&gt;true&lt;/rtexprvalue&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;description&gt;&lt;![CDATA[Set the html onmouseover attribute on rendered html element]]&gt;&lt;/description&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;/attribute&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;attribute&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;name&gt;onmouseup&lt;/name&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;required&gt;false&lt;/required&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;rtexprvalue&gt;true&lt;/rtexprvalue&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;description&gt;&lt;![CDATA[Set the html onmouseup attribute on rendered html element]]&gt;&lt;/description&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;/attribute&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;attribute&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;name&gt;onselect&lt;/name&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;required&gt;false&lt;/required&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;rtexprvalue&gt;true&lt;/rtexprvalue&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;description&gt;&lt;![CDATA[Set the html onselect attribute on rendered html element]]&gt;&lt;/description&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;/attribute&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;attribute&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;name&gt;readonly&lt;/name&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;required&gt;false&lt;/required&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;rtexprvalue&gt;true&lt;/rtexprvalue&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;description&gt;&lt;![CDATA[Whether the input is readonly]]&gt;&lt;/description&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;/attribute&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;attribute&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;name&gt;required&lt;/name&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;required&gt;false&lt;/required&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;rtexprvalue&gt;true&lt;/rtexprvalue&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;description&gt;&lt;![CDATA[If set to true, the rendered element will indicate that input is required]]&gt;&lt;/description&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;/attribute&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;attribute&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;name&gt;requiredposition&lt;/name&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;required&gt;false&lt;/required&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;rtexprvalue&gt;true&lt;/rtexprvalue&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;description&gt;&lt;![CDATA[Define required position of required form element (left|right)]]&gt;&lt;/description&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;/attribute&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;attribute&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;name&gt;size&lt;/name&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;required&gt;false&lt;/required&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;rtexprvalue&gt;true&lt;/rtexprvalue&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;description&gt;&lt;![CDATA[HTML size attribute]]&gt;&lt;/description&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;/attribute&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;attribute&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;name&gt;tabindex&lt;/name&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;required&gt;false&lt;/required&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;rtexprvalue&gt;true&lt;/rtexprvalue&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;description&gt;&lt;![CDATA[Set the html tabindex attribute on rendered html element]]&gt;&lt;/description&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;/attribute&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;attribute&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;name&gt;template&lt;/name&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;required&gt;false&lt;/required&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;rtexprvalue&gt;true&lt;/rtexprvalue&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;description&gt;&lt;![CDATA[The template (other than default) to use for rendering the element]]&gt;&lt;/description&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;/attribute&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;attribute&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;name&gt;templateDir&lt;/name&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;required&gt;false&lt;/required&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;rtexprvalue&gt;true&lt;/rtexprvalue&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;description&gt;&lt;![CDATA[The template directory.]]&gt;&lt;/description&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;/attribute&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;attribute&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;name&gt;theme&lt;/name&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;required&gt;false&lt;/required&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;rtexprvalue&gt;true&lt;/rtexprvalue&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;description&gt;&lt;![CDATA[The theme (other than default) to use for rendering the element]]&gt;&lt;/description&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;/attribute&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;attribute&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;name&gt;title&lt;/name&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;required&gt;false&lt;/required&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;rtexprvalue&gt;true&lt;/rtexprvalue&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;description&gt;&lt;![CDATA[Set the html title attribute on rendered html element]]&gt;&lt;/description&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;/attribute&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;attribute&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;name&gt;tooltip&lt;/name&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;required&gt;false&lt;/required&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;rtexprvalue&gt;true&lt;/rtexprvalue&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;description&gt;&lt;![CDATA[Set the tooltip of this particular component]]&gt;&lt;/description&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;/attribute&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;attribute&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;name&gt;tooltipConfig&lt;/name&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;required&gt;false&lt;/required&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;rtexprvalue&gt;true&lt;/rtexprvalue&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;description&gt;&lt;![CDATA[Set the tooltip configuration]]&gt;&lt;/description&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;/attribute&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;attribute&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;name&gt;value&lt;/name&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;required&gt;false&lt;/required&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;rtexprvalue&gt;true&lt;/rtexprvalue&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;description&gt;&lt;![CDATA[Preset the value of input element.]]&gt;&lt;/description&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;/attribute&gt;<br />
&nbsp; &lt;/tag&gt;</font></div>
<p><font face="Arial">struts2-number-plugin插件</font>&nbsp;</p>
</font>用法：与textfield几乎一模一样，只是多了一个displayFormat的属性，其格式取值例如：###.0#
          <br/><br/>
          <span style="color:red;">
            <a href="http://sys53.javaeye.com/blog/97433#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 03 Jul 2007 23:38:00 +0800</pubDate>
        <link>http://sys53.javaeye.com/blog/97433</link>
        <guid>http://sys53.javaeye.com/blog/97433</guid>
      </item>
          <item>
        <title>昨天卷走32分</title>
        <author>sys53</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://sys53.javaeye.com">sys53</a>&nbsp;
                    链接：<a href="http://sys53.javaeye.com/blog/96989" style="color:red;">http://sys53.javaeye.com/blog/96989</a>&nbsp;
          发表时间: 2007年07月02日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>昨天,公司内部进行篮球比赛.</p>
<p>我个人卷走32分,命中率(50%左右)还可以,只是出手次数娴多一点.只可惜78:88败北.</p>
<p>盼下次再战.</p>
          <br/><br/>
          <span style="color:red;">
            <a href="http://sys53.javaeye.com/blog/96989#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 02 Jul 2007 21:42:00 +0800</pubDate>
        <link>http://sys53.javaeye.com/blog/96989</link>
        <guid>http://sys53.javaeye.com/blog/96989</guid>
      </item>
          <item>
        <title>自己写的Struts2.0+hibernate+spring代码生成器</title>
        <author>sys53</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://sys53.javaeye.com">sys53</a>&nbsp;
                    链接：<a href="http://sys53.javaeye.com/blog/83892" style="color:red;">http://sys53.javaeye.com/blog/83892</a>&nbsp;
          发表时间: 2007年05月28日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <font face="Arial">Struts2.0+hibernate+spring代码生成器</font>
          <br/><br/>
          <span style="color:red;">
            <a href="http://sys53.javaeye.com/blog/83892#comments" style="color:red;">已有 <strong>8</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 28 May 2007 14:24:23 +0800</pubDate>
        <link>http://sys53.javaeye.com/blog/83892</link>
        <guid>http://sys53.javaeye.com/blog/83892</guid>
      </item>
          <item>
        <title>Subversion版本控制</title>
        <author>sys53</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://sys53.javaeye.com">sys53</a>&nbsp;
                    链接：<a href="http://sys53.javaeye.com/blog/59691" style="color:red;">http://sys53.javaeye.com/blog/59691</a>&nbsp;
          发表时间: 2007年03月14日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>Subversion最新版本是1.4.3</p>
<p>开源项目地址:&nbsp;&nbsp;<font face="Arial"><a href="http://subversion.tigris.org/">http://subversion.tigris.org/</a><br />
windows安装包下载地址：<a href="http://summersoft.fay.ar.us/pub/subversion/latest/windows/svn-1.4.3-setup.exe"><font face="Arial">http://summersoft.fay.ar.us/pub/subversion/latest/windows/svn-1.4.3-setup.exe</font><br />
</a>源代码下载：<font face="Arial"><a href="http://subversion.tigris.org/downloads/subversion-deps-1.4.2.zip">http://subversion.tigris.org/downloads/subversion-deps-1.4.2.zip</a></font></font></p>
<p>Subversion的Eclipse插件</p>
<p>开源项目地址：<font face="Arial"><a href="http://subclipse.tigris.org/">http://subclipse.tigris.org/</a></font></p>
<div title="callisto" class="h3" id="callisto">
<h3>Eclipse 3.2/Callisto and 3.3/Europa</h3>
<p><strong>Subclipse 1.2.0 最新的版本用于 Eclipse 3.2+!</strong></p>
<p><strong>链接1.2.x 版本:</strong><br />
更改日志: <a href="http://subclipse.tigris.org/subclipse_1.2.x/changes.html">http://subclipse.tigris.org/subclipse_1.2.x/changes.html</a><br />
Eclipse update site URL: <a href="http://subclipse.tigris.org/update_1.2.x">http://subclipse.tigris.org/update_1.2.x</a><br />
压缩包下载&nbsp;<a href="http://subclipse.tigris.org/servlets/ProjectDocumentList?folderID=2240">http://subclipse.tigris.org/servlets/ProjectDocumentList?folderID=2240</a> </p>
</div>
<div title="eclipse3.x" class="h3" id="eclipse3.x">
<h3>Eclipse 3.0/3.1</h3>
<p><strong>Subclipse 1.0.5 最新的版本用于Eclipse 3.0/3.1!</strong></p>
<p><strong>链接 1.0.x 版本:</strong><br />
更改日志: <a href="http://subclipse.tigris.org/subclipse/changes.html">http://subclipse.tigris.org/subclipse/changes.html</a><br />
Eclipse update site URL: <a href="http://subclipse.tigris.org/update_1.0.x">http://subclipse.tigris.org/update_1.0.x</a><br />
压缩包下载: <a href="http://subclipse.tigris.org/servlets/ProjectDocumentList?folderID=2240">http://subclipse.tigris.org/servlets/ProjectDocumentList?folderID=2240</a> </p>
</div>
          <br/><br/>
          <span style="color:red;">
            <a href="http://sys53.javaeye.com/blog/59691#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 14 Mar 2007 06:50:00 +0800</pubDate>
        <link>http://sys53.javaeye.com/blog/59691</link>
        <guid>http://sys53.javaeye.com/blog/59691</guid>
      </item>
          <item>
        <title>项目的时间估算</title>
        <author>sys53</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://sys53.javaeye.com">sys53</a>&nbsp;
                    链接：<a href="http://sys53.javaeye.com/blog/55534" style="color:red;">http://sys53.javaeye.com/blog/55534</a>&nbsp;
          发表时间: 2007年02月25日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>最好的方法还是依赖自己的经验和直觉（不要忘记，直觉也要建立在经验上）。感觉一下大概需要花多长的时间，然后将这个时间加倍，再加上10％。你的感觉可能是正确的；&ldquo;也许&rdquo;能在那个时间里完成。但&ldquo;加倍&rdquo;使那个时间更加充裕，&ldquo;10％&rdquo;的时间则用于进行最后的推敲和深化。但同时也要对此向上级主管作出适当的解释，无论对方有什么抱怨和修改，只要明确地告诉他们：这样的一个日程安排，只是我的一个估计！<br />
</p>
<p>上述这段话是出自于《think in java》<br />
其实这个问题一直困扰我很久，虽然自己都有很一个很直观的经验值，但老是确定一个数值时拿不下主意。</p>
          <br/><br/>
          <span style="color:red;">
            <a href="http://sys53.javaeye.com/blog/55534#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 25 Feb 2007 10:03:00 +0800</pubDate>
        <link>http://sys53.javaeye.com/blog/55534</link>
        <guid>http://sys53.javaeye.com/blog/55534</guid>
      </item>
          <item>
        <title>ant学习日记（一）</title>
        <author>sys53</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://sys53.javaeye.com">sys53</a>&nbsp;
                    链接：<a href="http://sys53.javaeye.com/blog/54706" style="color:red;">http://sys53.javaeye.com/blog/54706</a>&nbsp;
          发表时间: 2007年02月16日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>ant以前都使用，也简单学习过，不过只是需要了就用，用也只用一部份。不过现在很多正规的外包项目都要求用ant进行打包的，要求比较严格，所以在春节期间好好的学习与研究一下ant.</p>
<p>先转载一片别人的文章：</p>
<p>ant是一个基于JAVA的自动化脚本引擎，脚本格式为XML。除了做JAVA编译相关任务外，ANT还可以通过插件实现很多应用的调用。<br />
</p>
<ol>
    <li>ANT的基本概念： </li>
    <li>ANT的安装：解包，设置路径 </li>
    <li>ANT的使用：最好的学习只不过是一个简单实用的例子起步&hellip;&hellip; </li>
</ol>
<h2>ANT的基本概念：Java的Makefile</h2>
<p>当一个代码项目大了以后，每次重新编译，打包，测试等都会变得非常复杂而且重复，因此c语言中有make脚本来帮助这些工作的批量完成。在Java 中应用是平台无关性的，当然不会用平台相关的make脚本来完成这些批处理任务了，ANT本身就是这样一个流程脚本引擎，用于自动化调用程序完成项目的编译，打包，测试等。除了基于JAVA是平台无关的外，脚本的格式是基于XML的，比make脚本来说还要好维护一些。<br />
</p>
<p>每个ant脚本（缺省叫build.xml）中设置了一系列任务(target)：比如对于一个一般的项目可能需要有以下任务。</p>
<ul>
    <li>任务1：usage 打印本脚本的帮助信息（缺省） </li>
    <li>任务2：clean &lt;-- init 清空初始化环境 </li>
    <li>任务3：javadoc &lt;-- build &lt;-- init 生成JAVADOC </li>
    <li>任务4：jar &lt;-- build &lt;-- init 生成JAR </li>
    <li>任务5：all &lt;-- jar + javadoc &lt;-- build &lt;-- init 完成以上所有任务：jar javadoc </li>
</ul>
<p>而多个任务之间往往又包含了一定了依赖关系：比如把整个应用打包任务(jar)的这个依赖于编译任务(build)，而编译任务又依赖于整个环境初始化任务(init)等。<br />
<br />
注：我看到很多项目的ant脚本中的命名基本上都是一致的，比如：编译一般叫build或者compile；打包一般叫jar或war；生成文档一般命名为javadoc或javadocs；执行全部任务all。在每个任务的中，ANT会根据配置调用一些外部应用并配以相应参数执行。虽然ANT可调用的外部应用种类非常丰富，但其实最常用的就2，3个：比如javac javadoc jar等。 </p>
<h2>ANT的安装</h2>
<p>解包后在系统可执行路径中加入指向ant的bin的路径就可以了，比如可以在GNU/Linux上把以下配置加入/etc/profile中：<br />
export ANT_HOME=/home/ant<br />
export JAVA_HOME=/usr/java/j2sdk1.4.1<br />
export PATH=$PATH:$JAVA_HOME/bin:$ANT_HOME/bin<br />
<br />
这样执行ant 后，如果不指定配置文件ant会缺省找build.xml这个配置文件，并根据配置文件执行任务，缺省的任务设置可以指向最常用的任务，比如： build，或指向打印帮助信息：usage，告诉用户有那些脚本选项可以使用。<br />
<br />
</p>
<h2>ANT的使用<br />
</h2>
<div style="TEXT-ALIGN: left">最好的学习过程就是看懂那些open source项目中的build.xml脚本，然后根据自己的需要简化成一个更简单的，ANT和APACHE上很多非常工程派的项目：简单易用，而且适应性非常强，因为这些项目的建立往往来源于开发人员日常最直接的需求。<br />
以下是的一个<a href="http://sourceforge.net/projects/weblucene/">WebLucene</a>应用的例子：修改自<a href="http://www.jdom.org/">JDOM</a>的build.xml：<br />
<br />
<div class="code_title">xml 代码</div>
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-xml">
    <li class="alt"><span><span class="tag">&lt;</span><span class="tag-name">project</span><span>&nbsp;</span><span class="attribute">default</span><span>=</span><span class="attribute-value">&quot;usage&quot;</span><span>&nbsp;</span><span class="attribute">basedir</span><span>=</span><span class="attribute-value">&quot;.&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span><span class="comments">&lt;!--&nbsp;===================================================================&nbsp;--&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span><span class="comments">&lt;!--&nbsp;Initialization&nbsp;target&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span><span class="comments">&lt;!--&nbsp;===================================================================&nbsp;--&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">target</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;init&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">tstamp</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">property</span><span>&nbsp;</span><span class="attribute">file</span><span>=</span><span class="attribute-value">&quot;${basedir}/build.properties&quot;</span><span>&nbsp;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">property</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;Name&quot;</span><span>&nbsp;</span><span class="attribute">value</span><span>=</span><span class="attribute-value">&quot;ProjectFullName&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">property</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;name&quot;</span><span>&nbsp;</span><span class="attribute">value</span><span>=</span><span class="attribute-value">&quot;project_name&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">property</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;version&quot;</span><span>&nbsp;</span><span class="attribute">value</span><span>=</span><span class="attribute-value">&quot;0.2&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">property</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;year&quot;</span><span>&nbsp;</span><span class="attribute">value</span><span>=</span><span class="attribute-value">&quot;2003&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">echo</span><span>&nbsp;</span><span class="attribute">message</span><span>=</span><span class="attribute-value">&quot;-----------&nbsp;${Name}&nbsp;${version}&nbsp;[${year}]&nbsp;------------&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">property</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;debug&quot;</span><span>&nbsp;</span><span class="attribute">value</span><span>=</span><span class="attribute-value">&quot;off&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">property</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;optimize&quot;</span><span>&nbsp;</span><span class="attribute">value</span><span>=</span><span class="attribute-value">&quot;on&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">property</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;deprecation&quot;</span><span>&nbsp;</span><span class="attribute">value</span><span>=</span><span class="attribute-value">&quot;on&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">property</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;src.dir&quot;</span><span>&nbsp;</span><span class="attribute">value</span><span>=</span><span class="attribute-value">&quot;./src/WEB-INF/src&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">property</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;lib.dir&quot;</span><span>&nbsp;</span><span class="attribute">value</span><span>=</span><span class="attribute-value">&quot;./src/WEB-INF/lib&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">property</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;packages&quot;</span><span>&nbsp;</span><span class="attribute">value</span><span>=</span><span class="attribute-value">&quot;com.chedong.*,org.apache.lucene.*&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">property</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;build.src&quot;</span><span>&nbsp;</span><span class="attribute">value</span><span>=</span><span class="attribute-value">&quot;./src/WEB-INF/build&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">property</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;build.dest&quot;</span><span>&nbsp;</span><span class="attribute">value</span><span>=</span><span class="attribute-value">&quot;./src/WEB-INF/classes&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">property</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;build.javadocs&quot;</span><span>&nbsp;</span><span class="attribute">value</span><span>=</span><span class="attribute-value">&quot;./src/doc&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">path</span><span>&nbsp;</span><span class="attribute">id</span><span>=</span><span class="attribute-value">&quot;classpath&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">pathelement</span><span>&nbsp;</span><span class="attribute">path</span><span>=</span><span class="attribute-value">&quot;${jsdk_jar}&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">fileset</span><span>&nbsp;</span><span class="attribute">dir</span><span>=</span><span class="attribute-value">&quot;${lib.dir}&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">include</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;**/*.jar&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">fileset</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">path</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">filter</span><span>&nbsp;</span><span class="attribute">token</span><span>=</span><span class="attribute-value">&quot;year&quot;</span><span>&nbsp;</span><span class="attribute">value</span><span>=</span><span class="attribute-value">&quot;${year}&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">filter</span><span>&nbsp;</span><span class="attribute">token</span><span>=</span><span class="attribute-value">&quot;version&quot;</span><span>&nbsp;</span><span class="attribute">value</span><span>=</span><span class="attribute-value">&quot;${version}&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">filter</span><span>&nbsp;</span><span class="attribute">token</span><span>=</span><span class="attribute-value">&quot;date&quot;</span><span>&nbsp;</span><span class="attribute">value</span><span>=</span><span class="attribute-value">&quot;${TODAY}&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">filter</span><span>&nbsp;</span><span class="attribute">token</span><span>=</span><span class="attribute-value">&quot;log&quot;</span><span>&nbsp;</span><span class="attribute">value</span><span>=</span><span class="attribute-value">&quot;true&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">filter</span><span>&nbsp;</span><span class="attribute">token</span><span>=</span><span class="attribute-value">&quot;verbose&quot;</span><span>&nbsp;</span><span class="attribute">value</span><span>=</span><span class="attribute-value">&quot;true&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">target</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span><span class="comments">&lt;!--&nbsp;===================================================================&nbsp;--&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span><span class="comments">&lt;!--&nbsp;Help&nbsp;on&nbsp;usage&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span><span class="comments">&lt;!--&nbsp;===================================================================&nbsp;--&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">target</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;usage&quot;</span><span>&nbsp;</span><span class="attribute">depends</span><span>=</span><span class="attribute-value">&quot;init&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">echo</span><span>&nbsp;</span><span class="attribute">message</span><span>=</span><span class="attribute-value">&quot;${Name}&nbsp;Build&nbsp;file&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">echo</span><span>&nbsp;</span><span class="attribute">message</span><span>=</span><span class="attribute-value">&quot;-------------------------------------------------------------&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">echo</span><span>&nbsp;</span><span class="attribute">message</span><span>=</span><span class="attribute-value">&quot;&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">echo</span><span>&nbsp;</span><span class="attribute">message</span><span>=</span><span class="attribute-value">&quot;&nbsp;available&nbsp;targets&nbsp;are:&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">echo</span><span>&nbsp;</span><span class="attribute">message</span><span>=</span><span class="attribute-value">&quot;&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">echo</span><span>&nbsp;</span><span class="attribute">message</span><span>=</span><span class="attribute-value">&quot;&nbsp;&nbsp;&nbsp;jar&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--&gt;&nbsp;generates&nbsp;the&nbsp;${name}.jar&nbsp;file&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">echo</span><span>&nbsp;</span><span class="attribute">message</span><span>=</span><span class="attribute-value">&quot;&nbsp;&nbsp;&nbsp;build&nbsp;&nbsp;&nbsp;&nbsp;--&gt;&nbsp;compiles&nbsp;the&nbsp;source&nbsp;code&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">echo</span><span>&nbsp;</span><span class="attribute">message</span><span>=</span><span class="attribute-value">&quot;&nbsp;&nbsp;&nbsp;javadoc&nbsp;&nbsp;--&gt;&nbsp;generates&nbsp;the&nbsp;API&nbsp;documentation&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">echo</span><span>&nbsp;</span><span class="attribute">message</span><span>=</span><span class="attribute-value">&quot;&nbsp;&nbsp;&nbsp;clean&nbsp;&nbsp;&nbsp;&nbsp;--&gt;&nbsp;cleans&nbsp;up&nbsp;the&nbsp;directory&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">echo</span><span>&nbsp;</span><span class="attribute">message</span><span>=</span><span class="attribute-value">&quot;&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">echo</span><span>&nbsp;</span><span class="attribute">message</span><span>=</span><span class="attribute-value">&quot;&nbsp;Please&nbsp;rename&nbsp;build.properties.default&nbsp;to&nbsp;build.properties&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">echo</span><span>&nbsp;</span><span class="attribute">message</span><span>=</span><span class="attribute-value">&quot;&nbsp;and&nbsp;edit&nbsp;build.properties&nbsp;to&nbsp;specify&nbsp;JSDK&nbsp;2.3&nbsp;classpath.&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">echo</span><span>&nbsp;</span><span class="attribute">message</span><span>=</span><span class="attribute-value">&quot;&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">echo</span><span>&nbsp;</span><span class="attribute">message</span><span>=</span><span class="attribute-value">&quot;&nbsp;See&nbsp;the&nbsp;comments&nbsp;inside&nbsp;the&nbsp;build.xml&nbsp;file&nbsp;for&nbsp;more&nbsp;details.&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">echo</span><span>&nbsp;</span><span class="attribute">message</span><span>=</span><span class="attribute-value">&quot;-------------------------------------------------------------&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">echo</span><span>&nbsp;</span><span class="attribute">message</span><span>=</span><span class="attribute-value">&quot;&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">echo</span><span>&nbsp;</span><span class="attribute">message</span><span>=</span><span class="attribute-value">&quot;&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">target</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span><span class="comments">&lt;!--&nbsp;===================================================================&nbsp;--&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span><span class="comments">&lt;!--&nbsp;Prepares&nbsp;the&nbsp;source&nbsp;code&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span><span class="comments">&lt;!--&nbsp;===================================================================&nbsp;--&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">target</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;prepare-src&quot;</span><span>&nbsp;</span><span class="attribute">depends</span><span>=</span><span class="attribute-value">&quot;init&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comments">&lt;!--&nbsp;create&nbsp;directories&nbsp;--&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">mkdir</span><span>&nbsp;</span><span class="attribute">dir</span><span>=</span><span class="attribute-value">&quot;${build.src}&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">mkdir</span><span>&nbsp;</span><span class="attribute">dir</span><span>=</span><span class="attribute-value">&quot;${build.dest}&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comments">&lt;!--&nbsp;copy&nbsp;src&nbsp;files&nbsp;--&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">copy</span><span>&nbsp;</span><span class="attribute">todir</span><span>=</span><span class="attribute-value">&quot;${build.src}&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">fileset</span><span>&nbsp;</span><span class="attribute">dir</span><span>=</span><span class="attribute-value">&quot;${src.dir}&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">copy</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">target</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span><span class="comments">&lt;!--&nbsp;===================================================================&nbsp;--&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span><span class="comments">&lt;!--&nbsp;Compiles&nbsp;the&nbsp;source&nbsp;directory&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span><span class="comments">&lt;!--&nbsp;===================================================================&nbsp;--&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">target</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;build&quot;</span><span>&nbsp;</span><span class="attribute">depends</span><span>=</span><span class="attribute-value">&quot;prepare-src&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">javac</span><span>&nbsp;</span><span class="attribute">srcdir</span><span>=</span><span class="attribute-value">&quot;${build.src}&quot;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute">destdir</span><span>=</span><span class="attribute-value">&quot;${build.dest}&quot;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute">debug</span><span>=</span><span class="attribute-value">&quot;${debug}&quot;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute">optimize</span><span>=</span><span class="attribute-value">&quot;${optimize}&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">classpath</span><span>&nbsp;</span><span class="attribute">refid</span><span>=</span><span class="attribute-value">&quot;classpath&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">javac</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">target</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span><span class="comments">&lt;!--&nbsp;===================================================================&nbsp;--&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span><span class="comments">&lt;!--&nbsp;Creates&nbsp;the&nbsp;class&nbsp;package&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span><span class="comments">&lt;!--&nbsp;===================================================================&nbsp;--&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">target</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;jar&quot;</span><span>&nbsp;</span><span class="attribute">depends</span><span>=</span><span class="attribute-value">&quot;build&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">jar</span><span>&nbsp;</span><span class="attribute">jarfile</span><span>=</span><span class="attribute-value">&quot;${lib.dir}/${name}.jar&quot;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute">basedir</span><span>=</span><span class="attribute-value">&quot;${build.dest}&quot;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute">includes</span><span>=</span><span class="attribute-value">&quot;**&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">target</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span><span class="comments">&lt;!--&nbsp;===================================================================&nbsp;--&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span><span class="comments">&lt;!--&nbsp;Creates&nbsp;the&nbsp;API&nbsp;documentation&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span><span class="comments">&lt;!--&nbsp;===================================================================&nbsp;--&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">target</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;javadoc&quot;</span><span>&nbsp;</span><span class="attribute">depends</span><span>=</span><span class="attribute-value">&quot;build&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">mkdir</span><span>&nbsp;</span><span class="attribute">dir</span><span>=</span><span class="attribute-value">&quot;${build.javadocs}&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">javadoc</span><span>&nbsp;</span><span class="attribute">packagenames</span><span>=</span><span class="attribute-value">&quot;${packages}&quot;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute">sourcepath</span><span>=</span><span class="attribute-value">&quot;${build.src}&quot;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute">destdir</span><span>=</span><span class="attribute-value">&quot;${build.javadocs}&quot;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute">author</span><span>=</span><span class="attribute-value">&quot;true&quot;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute">version</span><span>=</span><span class="attribute-value">&quot;true&quot;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute">use</span><span>=</span><span class="attribute-value">&quot;true&quot;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute">splitindex</span><span>=</span><span class="attribute-value">&quot;true&quot;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute">windowtitle</span><span>=</span><span class="attribute-value">&quot;${Name}&nbsp;API&quot;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute">doctitle</span><span>=</span><span class="attribute-value">&quot;${Name}&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">classpath</span><span>&nbsp;</span><span class="attribute">refid</span><span>=</span><span class="attribute-value">&quot;classpath&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">javadoc</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">target</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span><span class="comments">&lt;!--&nbsp;===================================================================&nbsp;--&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span><span class="comments">&lt;!--&nbsp;Clean&nbsp;targets&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span><span class="comments">&lt;!--&nbsp;===================================================================&nbsp;--&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">target</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;clean&quot;</span><span>&nbsp;</span><span class="attribute">depends</span><span>=</span><span class="attribute-value">&quot;init&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">delete</span><span>&nbsp;</span><span class="attribute">dir</span><span>=</span><span class="attribute-value">&quot;${build.src}&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">delete</span><span>&nbsp;</span><span class="attribute">dir</span><span>=</span><span class="attribute-value">&quot;${build.dest}/org&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">delete</span><span>&nbsp;</span><span class="attribute">dir</span><span>=</span><span class="attribute-value">&quot;${build.dest}/com&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">delete</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">fileset</span><span>&nbsp;</span><span class="attribute">dir</span><span>=</span><span class="attribute-value">&quot;${build.dest}&quot;</span><span>&nbsp;</span><span class="attribute">includes</span><span>=</span><span class="attribute-value">&quot;**/*.class&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">delete</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">target</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span></span><span class="tag">&lt;/</span><span class="tag-name">project</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span></span><span class="comments">&lt;!--&nbsp;End&nbsp;of&nbsp;file&nbsp;--&gt;</span><span>&nbsp;&nbsp;</span></li>
</ol>
</div>
<br />
缺省任务：usage 打印帮助文档，告诉有那些任务选项：可用的有build, jar, javadoc和clean.<br />
<br />
初始化环境变量：init<br />
所有任务都基于一些基本环境变量的设置初始化完成，是后续其他任务的基础，在环境初始化过程中，有2点比较可以方便设置：<br />
<br />
1 除了使用却缺省的property设置了JAVA源路径和输出路径外，引用了一个外部的build.properties文件中的设置，<br />
<div class="code_title">xml 代码</div>
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-xml">
    <li class="alt"><span><span class="tag">&lt;</span><span class="tag-name">property</span><span>&nbsp;</span><span class="attribute">file</span><span>=</span><span class="attribute-value">&quot;${basedir}/build.properties&quot;</span><span>&nbsp;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span></span></li>
</ol>
</div>
<br />
这样大部分简单配置用户只要会看懂build.properties就可以了，毕竟XML比起key value的属性文件还是要可读性差一些。用build.properties也可以方便其他用户从编译的细节中解放出来。<br />
<br />
2 CLASSPATH设置：使用了其中的：<br />
&nbsp;&nbsp;&nbsp;
<div class="code_title">xml 代码</div>
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-xml">
    <li class="alt"><span><span class="tag">&lt;</span><span class="tag-name">path</span><span>&nbsp;</span><span class="attribute">id</span><span>=</span><span class="attribute-value">&quot;classpath&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">pathelement</span><span>&nbsp;</span><span class="attribute">path</span><span>=</span><span class="attribute-value">&quot;${jsdk_jar}&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">fileset</span><span>&nbsp;</span><span class="attribute">dir</span><span>=</span><span class="attribute-value">&quot;${lib.dir}&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">include</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;**/*.jar&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">fileset</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">path</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
</ol>
</div>
则相当于设置了：CLASSPATH=/path/to/resin/lib/jsdk23.jar; /path/to/project/lib/*.jar;<br />
<br />
文件复制：prepare-src<br />
创建临时SRC存放目录和输出目录。<br />
&nbsp;
<div class="code_title">xml 代码</div>
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-xml">
    <li class="alt"><span><span class="comments">&lt;!--&nbsp;===================================================================&nbsp;--&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;</span><span class="comments">&lt;!--&nbsp;Prepares&nbsp;the&nbsp;source&nbsp;code&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span><span class="comments">&lt;!--&nbsp;===================================================================&nbsp;--&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">target</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;prepare-src&quot;</span><span>&nbsp;</span><span class="attribute">depends</span><span>=</span><span class="attribute-value">&quot;init&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comments">&lt;!--&nbsp;create&nbsp;directories&nbsp;--&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">mkdir</span><span>&nbsp;</span><span class="attribute">dir</span><span>=</span><span class="attribute-value">&quot;${build.src}&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">mkdir</span><span>&nbsp;</span><span class="attribute">dir</span><span>=</span><span class="attribute-value">&quot;${build.dest}&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comments">&lt;!--&nbsp;copy&nbsp;src&nbsp;files&nbsp;--&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">copy</span><span>&nbsp;</span><span class="attribute">todir</span><span>=</span><span class="attribute-value">&quot;${build.src}&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">fileset</span><span>&nbsp;</span><span class="attribute">dir</span><span>=</span><span class="attribute-value">&quot;${src.dir}&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">copy</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">target</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
</ol>
</div>
编译任务：build<br />
编译时的CLASSPATH环境通过一下方式找到引用一个path对象<br />
<div class="code_title">xml 代码</div>
<br />
打包任务：jar<br />
对应用打包生成项目所写名的.jar文件<br />
&nbsp;
<div class="code_title">xml 代码</div>
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-xml">
    <li class="alt"><span><span class="comments">&lt;!--&nbsp;===================================================================&nbsp;--&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;</span><span class="comments">&lt;!--&nbsp;Creates&nbsp;the&nbsp;class&nbsp;package&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;</span><span class="comments">&lt;!--&nbsp;===================================================================&nbsp;--&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">target</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;jar&quot;</span><span>&nbsp;</span><span class="attribute">depends</span><span>=</span><span class="attribute-value">&quot;build&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">jar</span><span>&nbsp;</span><span class="attribute">jarfile</span><span>=</span><span class="attribute-value">&quot;${lib.dir}/${name}.jar&quot;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute">basedir</span><span>=</span><span class="attribute-value">&quot;${build.dest}&quot;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute">includes</span><span>=</span><span class="attribute-value">&quot;**&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">target</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
</ol>
</div>
<br />
<br />
生成JAVADOC文档任务: javadoc<br />
&nbsp;
<div class="code_title">xml 代码</div>
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-xml">
    <li class="alt"><span><span class="comments">&lt;!--&nbsp;===================================================================&nbsp;--&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;</span><span class="comments">&lt;!--&nbsp;Creates&nbsp;the&nbsp;API&nbsp;documentation&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span><span class="comments">&lt;!--&nbsp;===================================================================&nbsp;--&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">target</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;javadoc&quot;</span><span>&nbsp;</span><span class="attribute">depends</span><span>=</span><span class="attribute-value">&quot;build&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">mkdir</span><span>&nbsp;</span><span class="attribute">dir</span><span>=</span><span class="attribute-value">&quot;${build.javadocs}&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">javadoc</span><span>&nbsp;</span><span class="attribute">packagenames</span><span>=</span><span class="attribute-value">&quot;${packages}&quot;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute">sourcepath</span><span>=</span><span class="attribute-value">&quot;${build.src}&quot;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute">destdir</span><span>=</span><span class="attribute-value">&quot;${build.javadocs}&quot;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute">author</span><span>=</span><span class="attribute-value">&quot;true&quot;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute">version</span><span>=</span><span class="attribute-value">&quot;true&quot;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute">use</span><span>=</span><span class="attribute-value">&quot;true&quot;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute">splitindex</span><span>=</span><span class="attribute-value">&quot;true&quot;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute">windowtitle</span><span>=</span><span class="attribute-value">&quot;${Name}&nbsp;API&quot;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute">doctitle</span><span>=</span><span class="attribute-value">&quot;${Name}&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">classpath</span><span>&nbsp;</span><span class="attribute">refid</span><span>=</span><span class="attribute-value">&quot;classpath&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">javadoc</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">target</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
</ol>
</div>
<br />
清空临时编译文件：clean<br />
&nbsp;
<div class="code_title">xml 代码</div>
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-xml">
    <li class="alt"><span><span class="comments">&lt;!--&nbsp;===================================================================&nbsp;--&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;</span><span class="comments">&lt;!--&nbsp;Clean&nbsp;targets&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span><span class="comments">&lt;!--&nbsp;===================================================================&nbsp;--&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">target</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;clean&quot;</span><span>&nbsp;</span><span class="attribute">depends</span><span>=</span><span class="attribute-value">&quot;init&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">delete</span><span>&nbsp;</span><span class="attribute">dir</span><span>=</span><span class="attribute-value">&quot;${build.src}&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">delete</span><span>&nbsp;</span><span class="attribute">dir</span><span>=</span><span class="attribute-value">&quot;${build.dest}/org&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">delete</span><span>&nbsp;</span><span class="attribute">dir</span><span>=</span><span class="attribute-value">&quot;${build.dest}/com&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">delete</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">fileset</span><span>&nbsp;</span><span class="attribute">dir</span><span>=</span><span class="attribute-value">&quot;${build.dest}&quot;</span><span>&nbsp;</span><span class="attribute">includes</span><span>=</span><span class="attribute-value">&quot;**/*.class&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">delete</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">target</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
</ol>
</div>
<br />
TODO：<br />
更多任务/扩展：（样例）<br />
</div>
<ul>
    <li>测试任务：JUnit测试 </li>
    <li>代码风格检查任务：CheckStyle，Jalopy等 </li>
    <li>邮件警报任务：可以把以上这些任务的输出警告发送到制定的用户列表中，这个任务可以设置每天自动运行。 </li>
</ul>
          <br/><br/>
          <span style="color:red;">
            <a href="http://sys53.javaeye.com/blog/54706#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 16 Feb 2007 23:54:42 +0800</pubDate>
        <link>http://sys53.javaeye.com/blog/54706</link>
        <guid>http://sys53.javaeye.com/blog/54706</guid>
      </item>
          <item>
        <title>常用的功能测试方法(转载)</title>
        <author>sys53</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://sys53.javaeye.com">sys53</a>&nbsp;
                    链接：<a href="http://sys53.javaeye.com/blog/54272" style="color:red;">http://sys53.javaeye.com/blog/54272</a>&nbsp;
          发表时间: 2007年02月13日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          功能测试就是对产品的各功能进行验证，根据功能测试用例，逐项测试，检查产品是否达到用户要求的功能。常用的测试方法如下： <br />
<br />
　　1. 页面链接检查：每一个链接是否都有对应的页面，并且页面之间切换正确。 <br />
<br />
　　2. 相关性检查：删除/增加一项会不会对其他项产生影响，如果产生影响，这些影响是否都正确。 <br />
<br />
　　3. 检查按钮的功能是否正确：如update, cancel, delete, save等功能是否正确。 <br />
<br />
　　4. 字符串长度检查: 输入超出需求所说明的字符串长度的内容, 看系统是否检查字符串长度,会不会出错. <br />
<br />
　　5. 字符类型检查: 在应该输入指定类型的内容的地方输入其他类型的内容(如在应该输入整型的地方输入其他字符类型),看系统是否检查字符类型,会否报错. <br />
<br />
　　6. 标点符号检查: 输入内容包括各种标点符号,特别是空格,各种引号,回车键.看系统处理是否正确. <br />
<br />
　　7. 中文字符处理: 在可以输入中文的系统输入中文,看会否出现乱码或出错. <br />
<br />
　　8. 检查带出信息的完整性: 在查看信息和update信息时,查看所填写的信息是不是全部带出.,带出信息和添加的是否一致 <br />
<br />
　　9. 信息重复: 在一些需要命名,且名字应该唯一的信息输入重复的名字或ID,看系统有没有处理,会否报错,重名包括是否区分大小写,以及在输入内容的前后输入空格,系统是否作出正确处理.<br />
<br />
　　10. 检查删除功能:在一些可以一次删除多个信息的地方,不选择任何信息,按&rdquo;delete&rdquo;,看系统如何处理,会否出错; 然后选择一个和多个信息,进行删除,看是否正确处理. <br />
<br />
　　11. 检查添加和修改是否一致: 检查添加和修改信息的要求是否一致,例如添加要求必填的项,修改也应该必填; 添加规定为整型的项,修改也必须为整型. <br />
<br />
　　12. 检查修改重名:修改时把不能重名的项改为已存在的内容,看会否处理,报错.同时,也要注意,会不会报和自己重名的错. <br />
<br />
　　13. 重复提交表单：一条已经成功提交的纪录，back后再提交，看看系统是否做了处理。 <br />
<br />
　　14. 检查多次使用back键的情况: 在有back的地方,back,回到原来页面,再back,重复多次,看会否出错. <br />
<br />
　　15. search检查: 在有search功能的地方输入系统存在和不存在的内容,看search结果是否正确.如果可以输入多个search条件,可以同时添加合理和不合理的条件,看系统处理是否正确. <br />
<br />
　　16. 输入信息位置: 注意在光标停留的地方输入信息时,光标和所输入的信息会否跳到别的地方. <br />
<br />
　　17. 上传下载文件检查：上传下载文件的功能是否实现，上传文件是否能打开。对上传文件的格式有何规定，系统是否有解释信息，并检查系统是否能够做到。 <br />
<br />
　　18. 必填项检查：应该填写的项没有填写时系统是否都做了处理，对必填项是否有提示信息，如在必填项前加* <br />
<br />
　　19. 快捷键检查：是否支持常用快捷键，如Ctrl+C Ctrl+V Backspace等，对一些不允许输入信息的字段，如选人，选日期对快捷方式是否也做了限制。 <br />
<br />
　　20. 回车键检查: 在输入结束后直接按回车键,看系统处理如何,会否报错.
          <br/><br/>
          <span style="color:red;">
            <a href="http://sys53.javaeye.com/blog/54272#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 13 Feb 2007 18:32:06 +0800</pubDate>
        <link>http://sys53.javaeye.com/blog/54272</link>
        <guid>http://sys53.javaeye.com/blog/54272</guid>
      </item>
          <item>
        <title>面向对象软件度量</title>
        <author>sys53</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://sys53.javaeye.com">sys53</a>&nbsp;
                    链接：<a href="http://sys53.javaeye.com/blog/53675" style="color:red;">http://sys53.javaeye.com/blog/53675</a>&nbsp;
          发表时间: 2007年02月10日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <span class="smalltxt"><span class="bold">面向对象软件度量</span></span><br />
<br />
<span style="FONT-SIZE: 12px">Basic （基本的支持java， c++，c#)<br />
===========================<br />
LOC - Lines Of Code 代码行<br />
NOA - Number Of Attributes 属性数量<br />
NOC - Number Of Classes 类数量<br />
NOCON - Number Of Constructors 构造器数量<br />
NOIS - Number Of Import Statements 输入申明数<br />
NOM - Number Of Members 成员数<br />
NOO - Number Of Operations 操作数<br />
<br />
Cohesion:（内聚）<br />
-------------<br />
LOCOM1 - Lack of Cohesion of Methods 1<br />
LOCOM2 - Lack Of Cohesion Of Methods 2<br />
LOCOM3 - Lack Of Cohesion Of Methods 3 (also known as LOCOM*)<br />
<br />
Complexity （复杂性）<br />
---------------------------------<br />
AC - Attribute Complexity 属性复杂<br />
CC - Cyclomatic Complexity 循环复杂<br />
NORM - Number Of Remote Methods 远程方法数<br />
RFC - Response For Class 类响应<br />
WMPC1 - Weighted Methods Per Class 1 类有利方法1<br />
WMPC2 - Weighted Methods Per Class 2<br />
<br />
Coupling 耦合(度)<br />
----------<br />
CBO - Coupling Between Objects 对象间耦合<br />
CDBC - Change Dependency Between Classes 类间依赖改变<br />
CF - Coupling Factor 耦合要素<br />
DAC - Data Abstraction Coupling 数据提取耦合<br />
FO - FanOut 扇出<br />
<br />
MIC Method Invocation Coupling 方法调用耦合<br />
MICnorm = nMIC / (N -1)<br />
<br />
<br />
Encapsulation （封装）<br />
=================<br />
AHF - Attribute Hiding Factor 属性隐含要素<br />
MHF - Method Hiding Factor 方法隐含要素<br />
<br />
Halstead (halstead度量法)<br />
==============<br />
HDIFF - Halstead Difficulty<br />
HEFF - Halstead Effort<br />
HPLEN - Halstead Program Length<br />
HPVoc - Halstead program vocabulary<br />
NOPrnd- Number of Operands<br />
NUOprnd-Number of unique Operands<br />
NUOprtr-Number of Unique operators<br />
<br />
Inheritance（继承）<br />
==============<br />
================<br />
AIF - Attribute inheritance factor 属性继承要素<br />
DOIH - Depth of inheritance Hierarchy 继承层次深度<br />
MIF - Method inheritance factor 方法继承要素<br />
NOCC - Number of child classes 子类数<br />
<br />
Inheritance-based coupling 基于耦合的继承<br />
========================<br />
TRAp -Total reuse from ancestors percentage 从祖先类重用