™å¹ç›®çš„准备:(x¨¬)
我们希望从ä¸åŒçš„æ¥æºæ‰€äº§ç”Ÿçš„æ–‡ä»Óž¼Œå› æ¤æˆ‘们的Javaæºæ–‡ä»¶å°†æº?/tt>æ–‡äšg夹ä¸ã€?所有生æˆçš„æ–‡äšgåº”æ ¹æ?tt>廸™®¾ åQŒåÆˆåˆ†è£‚æˆæ•°ä¸ªå目录个ähæ¥éª¤åQ?ç?/tt>我们汇编文äšgå’?/tt> JAR为我们自å·Þqš„白佳文äšgã€?br />
我们希望从所产生的文件æ¥åˆ†ç¦»æºæ–‡ä»Óž¼Œå› æ¤æˆ‘们的JAVAæºæ–‡ä»¶å°†åœ?tt>src folder。所有生æˆçš„æ–‡äšgåº”æ ¹æ®æž„建方å¼ï¼Œòq¶äØ“(f¨´)å•独的æ¥éª¤åˆ†æˆæ•°ä¸ªå目录åQšclasses是我们编译的文äšgåQŒjar是我们JAR包文件ã€?br />md src
æŽ¥ç€æ˜¯åˆ›å»ÞZ¸€ä¸ªæ‰“å°å›ºå®šä¿¡æ¯çš„æ ‡å‡†è¾“出的JAVA代ç åQŒæ‰€ä»¥ä»…需è¦å†™ä¸‹è¿™äº›ä»£ç 到 src\oata\HelloWorld.java. 目录åQ?br />
package oata;
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World");
}
}
现在我们开始编译和˜q行åQ?br />
md build\classes
javac -sourcepath src -d build\classes src\oata\HelloWorld.java
java -cp build\classes oata.HelloWorld
(˜q™é‡Œæˆ‘想说明下,å¯èƒ½æœ‰äº›æ–°æ‰‹ä¸çŸ¥é“怎么æ ïL(f¨¥ng)¼–译和˜q行上é¢çš„程åºï¼Œæˆ‘在˜q™é‡Œ½Ž€å•æ¼”½CÞZ¸‹åQ?br />
首先˜q行--cmd--˜q›å…¥ä½ 项目所在的路径åQˆcd +目录路径å›_¯åQ‰ï¼š(x¨¬)
ç„¶åŽåœ¨ä¸Šé¢ä»£ç æ‹·è´è¿è¡?br />
)
˜q行å?ž®†åœ¨æŽ§åˆ¶å°æ‰“å?Hello WorldåQŒåÆˆä¸”ä½ ž®†çŽ°åœ¨åœ¨çš„å·¥½E‹ç›®å½•下多了(ji¨£n)一个buildæ–‡äšgå¤?build 下有一个classesæ–‡äšg夹,classesæ–‡äšgå¤¹ä¸‹æ£æ˜¯¾~–译åŽçš„HELLOWORLDçš„classæ–‡äšg,在通过观察åQ?br />
md build\classes --在当å‰é¡¹ç›®èµ\径下创å¾äº?ji¨£n)build\classesåèµ\å¾?br />
javac -sourcepath src -d build\classes src\oata\HelloWorld.java --¾~–译JAVAæ–‡äšgòq¶å°†å…¶æ”¾åˆ°classes目录ä¸?br />
java -cp build\classes oata.HelloWorld --˜q行classes目录下的HelloWorld.javaå—èŠ‚ç æ–‡ä»¶ã€?br />
创å¾ä¸€ä¸?jar-file 䏿˜¯å¾ˆå›°éš¾ï¼Œä½†æ˜¯åˆ›å¾ä¸€ä¸ªå¯åŠ¨çš„ jar-file éœ€è¦æ›´å¤šçš„æ¥éª¤åQšåˆ›å»ÞZ¸€ä¸ªåŒ…å«å¯åЍçñ”的类文äšgåQŒåˆ›å»ÞZ¸€ä¸ªç›®æ ‡ç›®å½•和归档文äšg:
echo Main-Class: oata.HelloWorld>myManifest
md build\jar
jar cfm build\jar\HelloWorld.jar myManifest -C build\classes .
java -jar build\jar\HelloWorld.jar
注æ„åQšä¸èƒ½æœ‰ä»ÖM½•½Iºæ ¼˜q行æ—?br />
˜q™æ˜¯æˆåŠŸ˜q行åŽçš„目录ã€?br />
å››æ¥æ‰§è¡Œåº”用åQ?/strong>
在完æˆä»…用JAVA完æˆåŽæˆ‘们必™å»è€ƒè™‘æˆ‘ä»¬çš„æž„å»ø™¿‡½E‹ã€‚我们必™åȼ–译我们的代ç åQŒå¦åˆ™æˆ‘们ä¸èƒ½å¯åŠ¨è¿™ä¸ªé¡¹ç›®ã€‚å•Š-å¼€å§?是的åQŒæˆ‘们能æä¾›ä¸€ä¸ªç›®æ ‡ã€‚我们应该å°è£…æˆ‘ä»¬çš„åº”ç”¨ã€‚çŽ°åœ¨ä»…ä»…åªæœ‰ä¸€ä¸ªclassæ–‡äšgåQŒä¸æ˜¯å¦‚æžœä½ æƒŒ™¦æä¾›ä¸€ä¸ªä¸‹è½½ï¼Œæ²¡æœ‰äººæƒ³ä¸‹è²å‡ 百文äšgåQˆæƒ³è±¡ä¸€ä¸‹ä¸€ä¸ªå¤æ‚çš„Swing GUI --所以我们必™åÕdˆ›å»ÞZ¸€ä¸ªJARæ–‡äšgåQˆç±»ä¼égºŽEXE˜q™ç§ç›´æŽ¥ç‚¹å‡»ž®±å¯å¯åЍ½E‹åºåQ‰ï¼Œä¸€ä¸ªå¯åЍJARæ–‡äšgž®†ä¼š(x¨¬)很ä¸é”™ã€‚ã€‚ã€‚è€Œè¿™æ˜¯ä¸€ä¸ªå¾ˆå¥½çš„å®žè·µä¸ºæœ‰ä¸€ä¸ªå¹²å‡€çš„ç›®æ ‡ï¼Œ˜q™ä¼š(x¨¬)åˆ é™¤æ‰€æœ‰ç”Ÿæˆçš„东西。许多失败将å¯ä»¥è§£å†³åªå› ä¸ÞZ¸€ä¸?“clean build”åQ?br />
默认的情况下Ant使用 build.xml ä½œäØ“(f¨´)æž„å¾æ–‡äšgçš„å¿UŽÍ¼Œæ‰€ä»¥æˆ‘们的.\build.xml ž®†ä¼š(x¨¬)是:(x¨¬)
<project>
<target name="clean">
<delete dir="build"/>
</target>
<target name="compile">
<mkdir dir="build/classes"/>
<javac srcdir="src" destdir="build/classes"/>
</target>
<target name="jar">
<mkdir dir="build/jar"/>
<jar destfile="build/jar/HelloWorld.jar" basedir="build/classes">
<manifest>
<attribute name="Main-Class" value="oata.HelloWorld"/>
</manifest>
</jar>
</target>
<target name="run">
<java jar="build/jar/HelloWorld.jar" fork="true"/>
</target>
</project>
çŽ°åœ¨ä½ å¯ä»¥ç¼–译打包è¿è¡Œåº”用了(ji¨£n)
ant compile
ant jar
ant run
或者更½Ž€çŸçš„命ä×o(h¨´)
ant compile jar run
While having a look at the buildfile, we will see some similar steps between Ant and the java-only commands:
åŒæ—¶æˆ‘们å¯ä»¥çœ‹ä¸€ä¸‹è¿™ä¸ªæž„建文ä»Óž¼Œæˆ‘们å¯ä»¥çœ‹è§è®¸å¤š¾cÖM¼¼çš„æ¥éª¤Antå’Œjava命ä×o(h¨´)之间
java-only | Ant |
---|---|
md build\classes javac -sourcepath src -d build\classes src\oata\HelloWorld.java echo Main-Class: oata.HelloWorld>mf md build\jar jar cfm build\jar\HelloWorld.jar mf -C build\classes . java -jar build\jar\HelloWorld.jar |
<mkdir dir="build/classes"/> <javac srcdir="src" destdir="build/classes"/> <!-- automatically detected --> <!-- obsolete; done via manifest tag --> <mkdir dir="build/jar"/> <jar destfile="build/jar/HelloWorld.jar" basedir="build/classes"> <manifest> <attribute name="Main-Class" value="oata.HelloWorld"/> </manifest> </jar> <java jar="build/jar/HelloWorld.jar" fork="true"/> |
...(待箋(hu¨¤)。。今天就暂时¾˜»è¯‘也å¦ä¹?f¨¤n)到˜q™é‡ŒåQŒå¯¹ANT也有äº?ji¨£n)ä¸€ä¸ªåˆæ¥çš„认识åQŒä¹ŸçŸ¥é“äº?ji¨£n)我们现在项目ä¸çš„build.xml是用æ¥ä½œç”šä¹ˆçš„了(ji¨£n)åQŒè¯´ç™½äº†(ji¨£n)ANTž®±æ˜¯ä¸€ä¸ªåŸºäºŽXMLæ–‡äšgçš„æž„å»ºå·¥å…øP¼Œå¯ä»¥ž®†ç±»ä¼égºŽclasså•?jar啊,通过¾~–译™å¹ç›®åQŒè®¾å®šç›¸åº”ç›®æ ‡èµ\径,˜q›è¡Œä¸€ä¸ªæ–‡ä»¶çš„æ•´ç†¾~–译å‘布。。呵å‘?˜q™å½“然是很肤‹¹…çš„åQŒä½†æ˜¯å¯¹äºŽé¡¹ç›®çš„应用‘›_¤Ÿäº?ji¨£n)。。ä¸ä¼?x¨¬)就对ç€å®žä¾‹åQŒåœ¨çœ‹APIäº?ji¨£n)解。。ã€?