??xml version="1.0" encoding="utf-8" standalone="yes"?>
国著名历史学家诺斯古d-帕金通过长期调查研究Q写了一本名叫《帕金森定律》的书,他在书中阐述了机构h员膨胀的原因及后果Q一个不U职的官员,可能有三条出路。第一是申请退职,把位子让l能q的人;W二是让一位能q的人来协助自己工作Q第三是ȝ两个水^比自己更低的人当助手?br />
q第一条\是万万走不得的,因ؓ那样会p多权力;W二条\也不能走Q因为那个能q的Z成ؓ自己的对手;看来只有W三条\最适宜。于是,两个q_的助手分担了他的工作Q他自己则高高在上发h令。两个助手既无能Q也׃行下效,再ؓ自己找两个无能的助手。如此类推,Ş成了一个机构臃ѝh于事、相互扯皮、效率低下的领导体系?br />
苛希U_?br />
西方理学中有一条著名的苛希U_律:如果实际理人员比最佳h数多两倍,工作旉p多两倍,工作成本p多四倍;如果实际理人员比最佳h数多三倍,工作旉p多三倍,工作成本p多六倍?br />
苛希U_律告诉我们,在管理上q不是h多力量大Q管理h员越多,工作效率未必׃高。苛希纳定律要求我们Q要认真研究q找C个最佳h敎ͼ以最大限度地减少工作旉Q降低工作成本?br />
马蝇效应
林肯年时和他的兄弟在肯塔基老家的一个农场里犁玉c_Q林肯吆马,他兄弟扶犁,而那匚w很懒Q慢慢腾腾,走走停停。可是有一D|间马走得飞快。林肯感到奇怪,C地头Q他发现有一只很大的马蝇叮在马n上,他就把马蝇打落了。看到马蝇被打落了,他兄弟就抱怨说Q?#8220;哎呀Q你Z么要打掉它,正是那家伙马跑h的嘛Q?#8221;
没有马蝇叮咬Q马慢慢腾腾Q走走停停;有马蝇叮咬,马不敢怠慢Q跑得飞快。这是马蝇效应。马蝇效应给我们的启C是Q一个h只有被叮着咬着Q他才不敢松懈,才会努力拼搏Q不断进步?br />
“南风”法则
“南风”法则也称“温暖”法则Q源于法国作家拉丹写过的一则寓aQ北风和南风比威力,看谁能把行hw上的大脱掉。北风首先来一个冷风凛冽寒冷刺骨,l果行hZ抵M北风的R袭,便把大衣裹得紧紧的。南风则徐徐吹动Q顿旉和日丽,行h因ؓ觉得春暖上nQ始而解开U扣Q而脱掉大,南风获得了胜利?br />
q则寓言形象地说明了一个道理:温暖胜于严寒。领D在理中运?#8220;南风”法则Q就是要重和关心下属,以下属ؓ本,多点“人情?#8221;Q尽力解决下属日常生zM的实际困难,使下属真正感受到领导者给予的温暖Q从而激发出工作的积极性?br />
酒与污水定律
酒与污水定律是指Q如果把一匙酒倒进一桶污水中Q你得到的是一桶污_如果把一匙污水倒进一桉中,你得到的q是一桶污水?br />
在Q何组l里Q都存在几个隑ּ的h物,他们存在的目的似乎就是ؓ了把事情搞糟。最p糕的是Q他们像果箱里的烂苹果一P如果你不及时处理Q它会迅速传染,把果里其他的苹果也弄烂?#8220;烂苹?#8221;的可怕之处在于它那惊人的破坏力。一个正直能q的入一个q部门可能被吞没,而一个无h才者能很快一个高效的部门变成一盘散沙。一个能工y匠花Ҏ日精心制作的陶瓷品,一头驴子一U钟p它毁坏掉?
]]>
团队合作是所有成功管理的根基。无Z是新手还是资q理hQ对你而言Q管理好团队都是重要且具Ȁ励性的挑战?/strong>
1.切记Q每位成员都能ؓ团队作出一些A献?/p>
2.谨慎地设定团队目标,且认真严肃地对待它们?/p>
3.切记成员间要彼此扶持?/p>
4.长E目标打散成许多短程计划?/p>
5.为每个计划设定明的期限?/p>
6.早军_何种形态的团队适合你的目标?/p>
7.努力与其它团队的成员建立强有力的紧密关系?/p>
8.找一位可提升团队工作士气的重量人物?/p>
9.时时提醒团队成员Q他们都是团队的一份子?/p>
10.团队的注意力集中在固定可衡量的目标上?/p>
11.利用友谊的强大力量强化团队?/p>
12.选择领导者时要把握用人唯才原则?/p>
13.领导者需具备强烈的团队命感?/p>
14.奖赏优异的表玎ͼ但绝不姑息错误?/p>
15.C每位团队成员看事情的角度都不一栗?/p>
16.征召团队成员Ӟ应注重他们的成长潜能?/p>
17.密切注意团队成员~少的相关经验?/p>
18.应不适Q的成员退出团队?/p>
19.扑ֈ能将人际关系处理得很好的人,q培M们?/p>
讄一支团?/strong>
成立一支团队是领导者的主要工作。确保你的团队有清楚明确的目的和_达成目标的资源。要以开攑֒公正无私的态度对待团队成员?/strong>
20.讑֮h战性的目标L据限期来考量是否合理?/p>
21.讑֮目标Ӟ考量个别成员的工作目标?/p>
22.计划的失败危及整体计划的成功?/p>
23.坚持得到信息技术支持,它能Z提供实需要的东西?/p>
24.对待团队外的N要如同对待团队成员一般?/p>
25.让团队的赞助者随时知道工作进展情形?/p>
26.除非你确定没有h能够胜QQ否则应避免“事必躬亜y?/p>
27.不要委托不必要的工作Q最好将其去除掉?/p>
28.赋予团队自己作决{的权力?/p>
29.鼓励团队成员正面U极的A献?/p>
30.肯定、宣扬和庆祝团队每次的成功?/p>
31.扑ֈ易于让成员及团队了解每日工作q度的展现方式?/p>
32.鼓励成员之间建立工作上的伙伴关系?/p>
33.鼓励天生h领导才能的hQƈ引导和培M们的领导技巧?/p>
34.l对不能没有解释驳回团队的意见Q与此相反,解释要坦白,理由要充分?/p>
35.定团队和客L怿持联pR?/p>
36.以自信肯定的态度让团队知道谁当家Q但要预防予人来势v汹的感觉?/p>
37.惛_法给新团队留下一个实时的好印象,但切忌操之过急?/p>
38.倘若你要求别人的Q抱持的心态不能只是欢q就行了Q也要依循徏议有所行动?/p>
提升团队效率
团队要达到应有的效率Q唯一的条件是每个成员都要学会集中力量。你必须了解团队的能力,以确保团队的成功?/strong>
39.协助团队扑ևҎ以改变有Q务推展的团体行ؓ?/p>
40.扑և可徏设性地利用冲突的方法?/p>
41.C要在工作中穿插安排娱乐调剂n心──q是每个人应得的利?/p>
42.若有计划出错Q一定要作全面性、公开化的分析?/p>
43.如果你希望团队成员有问题时能毫不犹疑地找你谈Q就要实施“开门政{”?/p>
44.要求提出问题的h解决问题?/p>
45.安排正式的和非正式的会面Q讨论团队的工作q展?/p>
46.使用不带感情只问事实的态度Q是化解U争的最好方法?/p>
47.保持团队成员间的熟稔Q以易于沟通?/p>
48.讄交谊场所Q让团队成员可作非正式的面交谈?/p>
49.鼓励同事间自q沟通活动?/p>
50.建立最适合的通讯U技pȝQƈl常更新?/p>
51.实施会议d轮流Ӟ让每个h都有ZL会议?/p>
52.可能多地授权给团队成员?/p>
53.事先于会前发E,预留旉l与会者准备?/p>
54.培养所有对团队有益的关pR?/p>
55.努力保持团队内外关系的均衡与q稳?/p>
56.定所有相关h士都能听到、了解好消息?/p>
57.倘有ȝ在团队关pM发酵蕴酿Q要快处理?/p>
58.安排团队与机构的其它部门作社交联谊?/p>
59.扑և你与“大佬”保持联pȝ最佳通讯U技?/p>
60.要对你在团队或办公室外接触过的重要h士作联系记录?/p>
61.谨慎分派角色以避免Q务重复?/p>
62.扑֯中的_֍Q且l不在公开场合批评M?/p>
63.一定要找有l验的h解决问题?/p>
64.分析团队成员每个人所扮演的角艌Ӏ?/p>
65.脑力Ȁ发出的意见,q不采用,亦不得轻视。否则,会打Mh的积极性,创意的流动也会因此停止?/p>
66.公^对待每个成员才能避免怨恨?/p>
67.定团队成员真正有错之前Q都视他们没有错?/p>
68.告诉同事他们做得很好Q这有助于激励团队士气?/p>
69.重每一位成员,包括那些l你刉麻烦的人?/p>
70.避免和团队成员有直接的冲H?/p>
71.C采用对事不对人的处事态度?/p>
72.定整个团队都能够从解决问题中学习经验?/p>
73.先选择完成一些规模大的、可快速达成及有成感的Q务,以激励成员再接再励?/p>
74.信团队成员皆了解团队中的其它角艌Ӏ?/p>
75.计算品质的成本之前,先计失败的成本?/p>
76.针对每笔预算及每团队行动计划,讑֮重大的改q目标?/p>
为未来努?/strong>
为团队设定新的、更高的挑战目标是团队工作中最令h兴奋的事情之一。可q用一些适当的技巧,推动团队向更大、更好的目标前进?/strong>
77.告知团队每位成员Q在讑֮的标准中有哪些评量的目?/p>
78.定所有改善措施及新订目标都持l进行着?/p>
79.召开讨会议前传阅所有相兌料及资料?/p>
80.开讨会时一定要避讳nd?/p>
81.C关系会随旉改变?/p>
82.避开低估或忽视坏消息的陷井?/p>
83.每天l束时自问团队今天是否又向前跨出了一步?/p>
84.們受训者关于训l课E的回馈意见?/p>
85.扑ֈ有最好设备的最佌l场所?/p>
86.聘请N讄公司内部的训l课E?/p>
87.利用Ud训练时的用餐旉作非正式的计划?/p>
88.每位团队成员都必d与设定目标的工作Q以促进团队合作及达成共识?/p>
89.允许团队自行军_达成目标的方法,可激励团队努力工作?/p>
90.定目标能激发团队的斗志Q如果不行,h变目标?/p>
91.一支没有“严峠Z目标的团队Q工作表现将不如接受q此c考验的团队?/p>
92.讑֮奖励标准Ӟ允许团队成员有发a权?/p>
93.避免使用名次表,因ؓ落后的团队成员将会感到自心受创?/p>
94.指定某h监视市场上每一个相兛_化?/p>
95.随时准备作改变,甚至计划的根本要素亦包含在改变的范围内?/p>
96.C有某些h很害怕变革?/p>
97.L能推动改革的团队成员?/p>
98.每隔一D|间作一ơ生涯发展的评量?/p>
99.CQ鼓励团队成员即是在帮助团队?/p>
100.与团队同事就生规划达成一致意见,q给他们提供必要的协助?/p>
101.团队解散后仍旧要与团队成员保持联p,因ؓ你可能还会与他们再次合作
rst is Ok!" + rst.next());
while(rst.next()){
out.println("
BOOK_CODE:" + rst.getString(1));
}
cn.close();
}else{
out.println("rst Fail!");
}
}
else
out.println("Fail!");
}catch(Exception ne){ out.println(ne);
}
3.2 Statement Pool
普通预~译代码Q?br />String strSQL=”select name from items where id=??
PreparedStatement ps=conn.prepareStatement(strSQL);
ps.setString(1, ??;
ResultSet rs=ps.executeQuery();
但是PreparedStatement 是与特定的Connection兌的,一旦Connection关闭Q则相关的PreparedStatement 也会关闭?br />Z创徏PreparedStatement ~冲池,可以在invokeҎ中通过sql语句判断池中q有没有可用实例?br />
4. 持久层设计与O/R mapping 技?br />1Q?HernateQ适合Ҏ产品的开发,q行闭化的设计
Hibernate 2003q被Jboss接管Q通过把java pojo对象映射到数据库的table中,采用了xml/javareflection技术等?.0提供了对存储q程和手写sql的支持,本n提供了hql语言?br />开发所需要的文gQ?br />hibernate配置文gQ?hibernate.cfg.xml ?hibernate.properties
hibernate 映射文gQ?a.hbm.xml
pojocL文gQ?a.java
导出表与表之间的关系Q?br />a. 从java对象到hbm文gQxdoclet
b. 从hbm文g到java对象Qhibernate extension
c. 从数据库到hbm文gQmiddlegen
d. 从hbm文g到数据库QSchemaExport
2QIatis Q适合寚w留系l的攚w和Ҏ有数据库的复用,有很强的灉|?3Q?Apache OJBQ优势在于对标准的全面支?4QEJBQ适合集群服务器,其性能也不象某些h所诟病的那么差?5Q?JDO (java data object)
讄一个Properties对象Q从而获取一个JDO的PersistenceManagerFactoryQ相当于JDBCq接池中的DataSourceQ,q而获得一个PersistenceManager对象Q相当于JDBC中的Connection对象Q,之后Q你可以用这个PersistenceManager对象来增加、更新、删除、查询对象?br />JDOQL是JDO的查询语aQ它有点象SQLQ但却是依照Java的语法的?br />
5. Z开源框架的Struts+Spring+Hibernate实现Ҏ
CZQ这是一?层架构的web E序Q通过一个Action 来调用业务代理,再通过它来回调 DAOcR下面的程图表CZMyUsers是如何工作的。数字表明了程的先后顺序,从web?UserAction)C间层(UserManager)Q再到数据层(UserDAO)Q然后返回?br />Spring是AOP, UserManager和UserDAO都是接口.
1) web?UserAction) Q调用中间层的接口方法,UserManager作ؓ属性注入?br />采用行的Struts框架Q虽然有很多Z屑一,但是q项技术在业界用的比较普遍Q能满基本的功能,可以减少培训学习成本?br />2) 中间?UserManager)Q将UserDAO作ؓ属性注入,其实C要是调用数据层接口的一些方法;它处于事务控制中?br />采用Spring框架实现QIOC与AOP是它的代名词Q功能齐全,非常的一个架构?br />3) 数据?UserDAO)Q实现类l承HibernateDaoSupportc,在该cM可以调用getHibernateTemplate()的一些方法执行具体的数据操作?br />采用Hibernate做O/R mappingQ从U种q象可以看出QHibernate是EJB3.0的beta版?(转蝲文章请保留出处:Java?www.javajia.com))
public static void main(String[] args) throws IOException {
ServerSocket s = new ServerSocket(51,2,InetAddress.getByName(ip));
System.out.println("Started: " + s);
try {
// Blocks until a connection occurs:
Socket socket = s.accept();
try {
System.out.println(
"Connection accepted: "+ socket);
BufferedReader in =
new BufferedReader(
new InputStreamReader(
socket.getInputStream()));
// Output is automatically flushed
// by PrintWriter:
PrintWriter out =
new PrintWriter(
new BufferedWriter(
new OutputStreamWriter(
socket.getOutputStream())),true);
while (true) {
String str = in.readLine();
if (str.equals("END")) break;
System.out.println("Echoing: " + str);
out.println(str);
}
// Always close the two sockets...
} finally {
System.out.println("closing...");
socket.close();
}
} finally {
s.close();
}
}
}
.net写客L代码
private void button2_Click(object sender, System.EventArgs e)
{
try
{
stSend = new Socket ( AddressFamily.InterNetwork ,
SocketType.Stream , ProtocolType.Tcp ) ;
//初始化一个Socket实例
IPEndPoint tempRemoteIP = new IPEndPoint(IPAddress.Parse("10.194.111.222"),51);
//ҎIP地址和端口号创徏q程l结?BR> EndPoint epTemp = ( EndPoint ) tempRemoteIP;
stSend.Connect ( epTemp ) ;
}
catch ( Exception err)
{
string s = err.ToString();
}
}
http://blog.csdn.net/javamxj/archive/2004/10/11/131935.aspx
我是一名java的爱好者,理所当然装了不少java斚w的YӞ大部分是开放源码的Q而且多数是绿色YӞ只要解压Q设|一下环境变量即可用?
下图为文件组l,请徏立相应的目录Qƈ~写HelloAnt.java
按照人家老外的文件组l规则咱也照搬?/FONT>
hello.ant.HelloAnt.java |
在项目根目录(hello-ant\)?个文Ӟant执行配置文gbuild.xml
build.xml |
ok,一切大功告成,哦,不,q没有运行它?/FONT>
dos下进入hello-ant的目录,即build.xml所在的目录Q我们要用ant工具执行?Q?nbsp;
执行: %ant_home%/bin/ant -file build.xml 用ant工具执行当前目录下的配置文gbuild.xml
?nbsp; Qant -file build.xml 你如果设|?ant_home%/bin到path?/FONT>
q次ok了,q是{案Q?/FONT>
命o提示W窗?/FONT> |
D:\temp\hello-ant>ant -file build.xml Buildfile: build.xml main: [javac] Compiling 1 source file to D:\temp\hello-ant\build\classes [java] hello ant,ant 的第一ơ接触,好棒Q?BR> BUILD SUCCESSFUL Total time: 2 seconds D:\temp\hello-ant> |
查一下build/classes目录Q哦Q看到编译过的文件就在这?
build/classes/hello/ant/HelloAnt.class.
hello ant q
(此段比较废话Q可以略q?
你也怼_q末单的工作写个批处理不得了,又xml又ant的,把我的时间都费完了Q我用jbuild?BR>webShpere不就得了Q怎末说你才明白呢Q反正网上开源项目大多数都用ant,你M能给人家?.jpx吧,
而且q样的工具太贵,受不?当然用D的兄弟不怕^_^ )Q而且ant可以让你明确的管理和自动化所有的东西:
~译-实施-试...,哎,E微ȝ一点点Q但节约你以前花在零的copy,paste上的旉.而且我发现管?BR>代码的质量有所提高.
我们要改qbuild.xmlQ让它做更多的事情:
凡事都讲I^衡,你要antl你做更多事Q当然要累一点点Q不q只用篏一ơ,以后的代码修改后的构建都?一键式"完成,我们制作一个hello的简单例子,你可以自己做j2ee的练习?/FONT>
我们要扩充目录结构,使它更像回事Q?/FONT>
ant处理~译之前的目录:
ant处理之后的目录:
图中Q\src,\docs,\lib是自ql的文gl构Q\build,\dist是ant动态生成的成品?/FONT>
\src 源文Ӟjava源,script源,jsp源,xml配置.....
\src\main java?BR>\src\script window,unix,liunx的执行scriptQ我们的单只有一个:
run.bat: java hello.ant.HelloAnt
\docs 手写说明文
\lib E序所需cd的jar,比如j2ee.jar,mail,jar...
\build 用ant动态生成的构徏目录
\build\classes ~译的类文g
\build\docs copy "\docs"的手写说明文档,和ant生成的api文
\build\lib 攄我们自己的HelloAnt.class打包成品hello-ant.jar
\dist\bin copy "\src\script" 得执行文?BR>\dist\docs copy "\build\docs" 的文?BR>\dist\lib 除了copy "\build\lib"下的hello-ant.jar外,
q应copy "\lib"的程序所需jarQ这里我们没有?/FONT>
以上是我学老外的文件组l,大家可以按照自己的爱好组l?/FONT>
我们~写必要的文Ӟ
hello.ant. HelloAnt.java |
已有 |
\src\script.bat |
\docs\index.html 随便写一个手写的文 |
hello ant 软g目手册docs |
\build.xml 配置文g |
build.xml多了些,但其实很单:(注释比较详细可以参照Q这里再单说一?
一个build.xml包含一个工E的自动化处理的完整xml说明Qƈ且基本由3U东东组成:
<project >
1.全局变量的定?BR> <property/>
2.dl?BR> <target>
3.许多单项d... 像copy,delete,javac,jar...
<task1/>
<task2/>
<task3/>
</target>
</project>
参考及下蝲Q?BR>
本文E序:W?个hello-ant
本文E序:W?个进阶的hello-ant
ant最C载:
http://jakarta.apache.org/ant/index.html
ant具体的编写方法参考ant手册以下2部分ŞQ?BR>http://jakarta.apache.org/ant/manual/using 使用说明
http://jakarta.apache.org/ant/manual/coretasklist.html 核心tasks
其他一大堆东西你要看也行。不q我觉得比较费旉?A >
http://jakarta.apache.org/ant/manual/index.html 手册index
huihoo.com译改编?A >ant/manual/using
http://www.huihoo.com/java/ant.html
用ANT构造Application作者:余斌?
http://developer.ccidnet.com/pub/disp/Article?columnID=295&articleID=27619&pageNO=1
ibm 利用 Ant ?JUnit q行增量开发——用单元测试来逐步改进代码
http://www-900.ibm.com/developerWorks/cn/java/j-ant/index.shtml
SET ANT_HOME=D:\jakarta-ant-1.5.1 //注意是Ant的安装目录,不是bin子目?BR>SET PATH=%PATH%;%ANT_HOME%\bin; |
Buildfile: build.xml does not exist! Build failed |
//HelloWorld.java package com.sharetop.antdemo; public class HelloWorld { public static void main( String args[] ) { System.out.println("Hello world. "); } } |
<?xml version="1.0" encoding="UTF-8" ?> <project name="HelloWorld" default="run" basedir="." > <property name="src" value="src"/> <property name="dest" value="classes"/> <property name="hello_jar" value="hello.jar" /> <target name="init"> <mkdir dir="${dest}"/> </target> <target name="compile" depends="init"> <javac srcdir="${src}" destdir="${dest}"/> </target> <target name="build" depends="compile"> <jar jarfile="${hello_jar}" basedir="${dest}"/> </target> <target name="run" depends="build"> <java classname="com.sharetop.antdemo.HelloWorld" classpath="${hello_jar}"/> </target> </project> |
? ant_demo应用的目录结?
G:\myDoc\ant_demo>ant -buildfile build_front.xml |
G:\myDoc\ant_demo>ant compile |
目录 | 文g |
bin | 公共的二q制文gQ以及运行脚? |
build | 临时创徏的文Ӟ如类文g{? |
dist | 目标输出文gQ如生成Jar文g{? |
doc/javadocs | 文? |
lib | 需要导出的Java? |
src | 源文? |
<target name="core" depends="init"> <ant dir="components" target="core"/> <ant dir="waf/src" target="core"/> <ant dir="apps" target="core"/> </target> |
? build.xml文g的结?/P>
每个Task是一D可被执行的代码Q比如,前例中的javac、jar是两个最常用的Task。Ant定义了大量的核心TaskQ我们要考虑的第二个问题正是如何L握这大量的Task。其实唯一的方法就是边学习边实践,q方面最好的参考就是官方的Ant使用手册?
外部文g的?
使用外部的Property文g可以保存一些预讄的公共属性变量。这些属性可以在多个不同的Build文g中用?
可以一个外部的XML文g导入Build文g中,q样多个目的开发者可以通过引用来共享一些代码,同样Q这也有助于Build文g的重用,CZ代码如下所C:
<!DOCTYPE project [ <!ENTITY share-variable SYSTEM "file:../share-variable.xml"> <!ENTITY build-share SYSTEM "file:../build-share.xml"> ]> <project name="main" default="complie" basedir="."> &share-variable; &build-share; ... ... |
<target name="deploy_HelloEJB" depends="compile"> <delete dir="${temp}/ejb_make"/> <!-- 首先删除临时目录 --> <delete file="${temp}/helloEJB.jar"/> <!-- 删除WebLogic域中老版本的EJB --> <delete file="${weblogic.deploy.dest}/helloEJB.jar"/> <!-- 创徏META-INF目录Q放|ejb-jar.xml和weblogic-ejb-jar.xml --> <mkdir dir="${temp}/ejb_make/META-INF"/> <!-- 拯ejb-jar.xml和weblogic-ejb-jar.xml C时目?-> <copy todir="${temp}/ejb_make/META-INF"> <fileset dir="etc/baseinfo"> <include name="*.xml"/> </fileset> </copy> <!-- 拯所有的helloEJBcd临时目录 --> <copy todir="${temp}/ejb_make/"> <fileset dir="${dest.classes}/"> <!-- dest.classes是输出的cL件目?--> <include name="${dest.classes}/helloEJB/**"/> </fileset> </copy> <!-- 所有这些文件打包成helloEJB.jar --> <jar jarfile="${temp}/helloEJB.jar" basedir="${temp}/ejb_make"/> <!-- q行weblogic.ejbc~译 --> <java classpath="${wl_cp}" classname="weblogic.ejbc" fork="yes" > <classpath> <fileset dir="lib"> <include name="*.jar" /> </fileset> </classpath> <arg value="${temp}/helloEJB.jar" /> <arg value="${temp}/helloEJB_deploy.jar" /> </java> <!-- 拯/发布到WebLogic的{DOMAIN}\applications目录 --> <copy file="${temp}/helloEJB_deploy.jar" todir="${weblogic.deploy.dest}"/> </target> |
<target name="run" depends="client"> <junit printsummary="yes" fork="yes" haltonfailure="yes"> <classpath> <pathelement location="client.jar" /> </classpath> <formatter type="plain" /> <test name="com.sharetop.antdemo.HelloWorldTest" /> </junit> </target> |
//HelloInfoTask.java package com.sharetop.antdemo; import org.apache.tools.ant.*; public class HelloInfoTask { private String msg; public void execute() throws BuildException { System.out.println(msg); } public void setMessage(String msg) { this.msg = msg; } } |
//HelloTask.java package com.sharetop.antdemo; import org.apache.tools.ant.*; public class HelloTask extends Task implements org.apache.tools.ant.TaskContainer { private Task info; private int count; public void execute() throws BuildException { for(int i=0;i<count;i++) info.execute(); } public void setCount(int c){ this.count=c; } public void addTask(Task t){ this.info=t; } } |
<target name="hello" depends="client"> <taskdef name="hello" classname="com.sharetop.antdemo.HelloTask" classpath="client.jar"/> <taskdef name="helloinfo" classname="com.sharetop.antdemo.HelloInfoTask" classpath="client.jar"/> <hello count="3" > <helloinfo message="hello world" /> </hello> </target> |
package com.sharetop.antdemo; import org.apache.tools.ant.*; import org.apache.tools.ant.taskdefs.*; import java.io.File; public class RunAntTask { public RunAntTask() { } public static void main(String args[]){ AntJAR j = new AntJAR(); j.setBasedir(new File("./classes")); j.setJarfile(new File("aaa.jar")); j.execute(); } } final class AntJAR extends Jar { public AntJAR() { project = new Project(); project.init(); taskType = "jar"; taskName = "jar"; } } |
public void buildTarget(String targetName,String buildFileName) { try { Project p = new Project(); p.init(); File f = new File(buildFileName); p.setUserProperty("ant.file",f.getAbsolutePath()); ProjectHelper.configureProject(p,f); p.addBuildListener(this); if( targetName==null ) p.executeTarget(p.getDefaultTarget()); else p.executeTarget(targetName); } catch (Exception ex) { jTextArea1.append(ex.getMessage()); } } |
public void buildStarted(BuildEvent event){ /* nothing*/ } public void buildFinished(BuildEvent event) { /* nothing*/ } public void targetStarted(BuildEvent event) { this.jTextArea1.append(event.getTarget().getName()+": \n\r"); } public void targetFinished(BuildEvent event) {/* nothing*/ } public void taskStarted(BuildEvent event) {/* nothing*/ } public void taskFinished(BuildEvent event) { /* nothing*/ } public void messageLogged(BuildEvent event) { int prior = event.getPriority(); switch(prior){ case Project.MSG_ERR : this.jTextArea1.append("["+event.getTask().getTaskName()+"]Err:" +event.getMessage()); break; case Project.MSG_INFO: this.jTextArea1.append("["+event.getTask().getTaskName()+"]"+event.getMessage ()); break; case Project.MSG_WARN: this.jTextArea1.append("["+event.getTask().getTaskName()+"]" +event.getMessage()); break; case Project.MSG_VERBOSE: this.jTextArea1.append(event.getMessage()); break; } } |