java 板


主要内容 1. 常用task(这是很主观的xd) :: mkdir :: copy :: delete :: move :: javac :: echo :: java 2. 执行class 3. target相依性 行前讲习 * 在一些稍具模规的project大致上都会把source directory 和output directory分开,output directory也许是lib也许是bin 没有一定的。要达到这些目的,在ant中提供了几个task能帮得上忙。 (copy. move. delete. mkdir) * 一个project可能有多许`组`程式,你可以为这些程式分别撰写个自的target 但是,有些target必需限制在某些target之後执行。这问题就需要利用 target的相依属性(depends)来设定了:) 重新规划nice project project basedir / src/ bin/ build.xml 我们重新规划project如上述目录结构:)所以,我们这回把*.java放在src 之中。产生出的*.class则放在bin之中。但我并不打算自己建立bin dir build.xml (原先的) ---------------------------------------------------------------------- slayer@ubuntu:~/test/anttest$ ls build.xml src slayer@ubuntu:~/test/anttest$ cat build.xml <?xml version="1.0" encoding="utf-8" ?> <project name="nice" basedir="."> <property name="src.dir" value="."/> <target name="i-need-kitty" description="just get me a hello kitty"> <echo>Kitty Kitty</echo> <javac srcdir="${src.dir}" /> </target> </project> build.xml (指定src) :: 如之前介绍的,更改src.dir变数内容即可:) ---------------------------------------------------------------------- slayer@ubuntu:~/test/anttest$ cat build.xml <?xml version="1.0" encoding="utf-8" ?> <project name="nice" basedir="."> <property name="src.dir" value="src"/> <target name="i-need-kitty" description="just get me a hello kitty"> <echo>Kitty Kitty</echo> <javac srcdir="${src.dir}" /> </target> </project> slayer@ubuntu:~/test/anttest$ ant i-need-kitty Buildfile: build.xml i-need-kitty: [echo] Kitty Kitty BUILD SUCCESSFUL Total time: 1 second slayer@ubuntu:~/test/anttest$ ls -l src/ 总计 8 -rw-r--r-- 1 slayer slayer 340 2006-04-08 13:02 HelloKitty.class -rw-r--r-- 1 slayer slayer 108 2006-04-08 08:26 HelloKitty.java slayer@ubuntu:~/test/anttest$ =================================================================== 结果发现,编译好的class档跑到src内了。所以我们还需要再修改一下 build.xml来符合我们所期待的结果。为了达成我们的目的,有几种改变的方式 你可以在i-need-kitty的target中,直接使用mkdir等相关的task。 或是把建立bin directory独立为一个target。 build.xml :: 采用在i-need-kitty加上move的动作 http://ant.apache.org/manual/CoreTasks/move.html ---------------------------------------------------------------------- slayer@ubuntu:~/test/anttest$ cat build.xml <?xml version="1.0" encoding="utf-8" ?> <project name="nice" basedir="."> <property name="src.dir" value="src"/> <property name="bin.dir" value="bin"/> <target name="i-need-kitty" description="just get me a hello kitty"> <echo>Kitty Kitty</echo> <javac srcdir="${src.dir}" /> <move todir="${bin.dir}"> <fileset dir="${src.dir}"> <include name="*.class" /> </fileset> </move> </target> </project> 执行i-need-kitty ---------------------------------------------------------------------- slayer@ubuntu:~/test/anttest$ ant i-need-kitty Buildfile: build.xml i-need-kitty: [echo] Kitty Kitty [javac] Compiling 1 source file [move] Moving 1 file to /home/slayer/test/anttest/bin BUILD SUCCESSFUL Total time: 2 seconds 观察结果,确实是我们期待的那样:) ---------------------------------------------------------------------- slayer@ubuntu:~/test/anttest$ ls -l * -rw-r--r-- 1 slayer slayer 585 2006-04-08 13:18 build.xml bin: 总计 4 -rw-r--r-- 1 slayer slayer 340 2006-04-08 13:19 HelloKitty.class src: 总计 4 -rw-r--r-- 1 slayer slayer 108 2006-04-08 08:26 HelloKitty.java ====================================================================== 细心的人一定发现了。我们并没有mkdir:) 这大概算move的特异功能xd 没有先mkdir出来。它就帮你自动mkdir了。 接着那编好了之後,能不能执行来跑看看呢? 这当然也是一个ez job 首先,先让我招唤一下error message:) build.xml :: 含java HelloKitty ---------------------------------------------------------------------- slayer@ubuntu:~/test/anttest$ cat build.xml <?xml version="1.0" encoding="utf-8" ?> <project name="nice" basedir="."> <property name="src.dir" value="src"/> <property name="bin.dir" value="bin"/> <target name="i-need-kitty" description="just get me a hello kitty"> <echo>Kitty Kitty</echo> <javac srcdir="${src.dir}" /> <move todir="${bin.dir}"> <fileset dir="${src.dir}"> <include name="*.class" /> </fileset> </move> </target> <target name="kitty"> <java classname="HelloKitty" /> </target> </project> slayer@ubuntu:~/test/anttest$ ant kitty Buildfile: build.xml kitty: [java] Could not find HelloKitty. Make sure you have it in your classpath [java] at org.apache.tools.ant.taskdefs.ExecuteJava.execute(ExecuteJava.java:170) [java] at org.apache.tools.ant.taskdefs.Java.run(Java.java:710) [java] at org.apache.tools.ant.taskdefs.Java.executeJava(Java.java:178) [java] at org.apache.tools.ant.taskdefs.Java.execute(Java.java:84) [java] at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:275) [java] at org.apache.tools.ant.Task.perform(Task.java:364) [java] at org.apache.tools.ant.Target.execute(Target.java:341) [java] at org.apache.tools.ant.Target.performTasks(Target.java:369) [java] at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1216) [java] at org.apache.tools.ant.Project.executeTarget(Project.java:1185) [java] at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:40) [java] at org.apache.tools.ant.Project.executeTargets(Project.java:1068) [java] at org.apache.tools.ant.Main.runBuild(Main.java:668) [java] at org.apache.tools.ant.Main.startAnt(Main.java:187) [java] at org.apache.tools.ant.launch.Launcher.run(Launcher.java:246) [java] at org.apache.tools.ant.launch.Launcher.main(Launcher.java:67) BUILD SUCCESSFUL Total time: 0 seconds ====================================================================== 别害怕错误讯息太多。通常看第一个发生的错误就是了。如果不确定, 就找与你自己的程式有关的部分来看就好。其他package产生的错误只是连带而来:) <% Could not find HelloKitty. Make sure you have it in your classpath %> 所以,直觉就是没有为java属性加上classpath: <% <java classname="HelloKitty" classpath="${bin.dir}" /> %> 再次执行: ---------------------------------------------------------------------- slayer@ubuntu:~/test/anttest$ ant kitty Buildfile: build.xml kitty: [java] Get Hello Kitty atSat Apr 08 13:45:39 CST 2006 BUILD SUCCESSFUL Total time: 0 seconds ====================================================================== 虽然,到目前为止看起来是正常的。但是我们忽略了执行顺序的问题。如果没有 先执行i-need-kitty就会发生问题。同样地,我们砍除bin来招唤出error message 来欣赏一下^^ <% slayer@ubuntu:~/test/anttest$ rm -rf bin slayer@ubuntu:~/test/anttest$ ant kitty Buildfile: build.xml kitty: [java] Could not find HelloKitty. Make sure you have it in your classpath ................................................後面同上:) %> 你会发现这和没有写classpath的error message是相同的。 所以,当发生这种error message时,您必需检查这二种情况:) 言归正传,我们还是要用target提供的depends属性来做简单的处理: <% <target name="kitty" depends="i-need-kitty"> %> 再次执行 ---------------------------------------------------------------------- slayer@ubuntu:~/test/anttest$ ant kitty Buildfile: build.xml i-need-kitty: [echo] Kitty Kitty [javac] Compiling 1 source file [move] Moving 1 file to /home/slayer/test/anttest/bin kitty: [java] Get Hello Kitty at Sat Apr 08 13:53:17 CST 2006 BUILD SUCCESSFUL Total time: 1 second ====================================================================== 大致上,ant基本就是这些功能噜:) 看倌可以自行实作2个target 1. usage: 用echo显示讯息 2. clean: 用delete删除bin PS. 本篇将相依、classpath的问题过於简化:) 有兴趣的朋友可以上网找相关文章 :) -- 夫兵者不祥之器物或恶之故有道者不处君子居则贵左用兵则贵右兵者不祥之器非君子 之器不得已而用之恬淡为上胜而不美而美之者是乐杀人夫乐杀人者则不可得志於天下 矣吉事尚左凶事尚右偏将军居左上将军居右言以丧礼处之杀人之众以哀悲泣之战胜以 丧礼处之道常无名朴虽小天下莫能臣侯王若能守之万物将自宾天地相合以降甘露民莫 之令而自均始制有名名亦既有夫亦将知止知止可以 pc210-59-94-148.nutn.edu.tw 作者在 06/04/08 12:39:21 pc210-59-94-148.nutn.edu.tw 修改这篇文章 作者在 06/04/08 13:29:04 pc210-59-94-148.nutn.edu.tw 修改这篇文章 作者在 06/04/08 13:32:22 pc210-59-94-148.nutn.edu.tw 修改这篇文章 作者在 06/04/08 13:46:48 pc210-59-94-148.nutn.edu.tw 修改这篇文章 作者在 06/04/08 13:56:49 pc210-59-94-148.nutn.edu.tw 修改这篇文章 作者在 06/04/08 13:58:50 pc210-59-94-148.nutn.edu.tw 修改这篇文章 作者在 06/04/08 13:59:09 pc210-59-94-148.nutn.edu.tw 修改这篇文章







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草
伺服器连线错误,造成您的不便还请多多包涵!
「赞助商连结」






like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:BabyMother站内搜寻

TOP